cgi.FieldStorage () ничего не возвращает? - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь написать скрипт на python, который обслуживается Apache2 с включенным модулем WSGI.Я написал следующее:

import pprint
import cgi

def application(environ,start_response):

    form = cgi.FieldStorage()
    status = '200 OK'
    html = '<html>\n' \
           '<body>\n' \
           '<div style="width: 100%; text-align: center;">\n' \
           '<form method="post"><input name="username" /><input type="submit" value="click" /></form>\n'
    html = html + '<p>' + pprint.saferepr(form) + '</p>'
    html = html + '<p>' + pprint.saferepr(environ) + '</p>'
    html = html + '<p>' + pprint.saferepr(start_response) + '</p>'
    html = html + \
           '</div>\n' \
           '</body>\n' \
           '</html>\n'
    response_header = [('Content-type','text/html')]
    start_response(status,response_header)
    return [html]

Я могу посетить свой веб-браузер, чтобы увидеть эту страницу.Когда я заполняю поле <input name="username" /> и нажимаю кнопку, чтобы отправить форму, cgi.FieldStorage(), похоже, не содержит поля username.Вот что я вижу на своей странице:

FieldStorage(None, None, [])

{'CONTENT_LENGTH': '21', 'CONTENT_TYPE': 'application/x-www-form-urlencoded', 'CONTEXT_DOCUMENT_ROOT': '/var/www/html', 'CONTEXT_PREFIX': '', 'DOCUMENT_ROOT': '/var/www/html', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate', 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5', 'HTTP_CONNECTION': 'keep-alive', 'HTTP_COOKIE': 'csrftoken=aHIK8wfnlHC8Izd8WU21XfMa2EUzh73RdD598R31b4b2KZLL9liXJY56B5I3zdZz; sessionid=txkl5hvvb8hwtph5f2jaeiot0orwrpek', 'HTTP_HOST': '192.168.0.26', 'HTTP_REFERER': 'http://192.168.0.26/wsgi', 'HTTP_UPGRADE_INSECURE_REQUESTS': '1', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0', 'PATH_INFO': '', 'QUERY_STRING': '', 'REMOTE_ADDR': '192.168.0.18', 'REMOTE_PORT': '59467', 'REQUEST_METHOD': 'POST', 'REQUEST_SCHEME': 'http', 'REQUEST_URI': '/wsgi', 'SCRIPT_FILENAME': '/var/www/html/wsgy.py', 'SCRIPT_NAME': '/wsgi', 'SERVER_ADDR': '192.168.0.26', 'SERVER_ADMIN': 'webmaster@localhost', 'SERVER_NAME': '192.168.0.26', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_SIGNATURE': '
Apache/2.4.29 (Ubuntu) Server at 192.168.0.26 Port 80
\n', 'SERVER_SOFTWARE': 'Apache/2.4.29 (Ubuntu)', 'apache.version': (2, 4, 27), 'mod_wsgi.application_group': 'fd00:f0f2:495c:5722:a00:27ff:fe40:b2fa|/wsgi', 'mod_wsgi.callable_object': 'application', 'mod_wsgi.enable_sendfile': '0', 'mod_wsgi.handler_script': '', 'mod_wsgi.ignore_activity': '0', 'mod_wsgi.listener_host': '', 'mod_wsgi.listener_port': '80', 'mod_wsgi.path_info': '', 'mod_wsgi.process_group': '', 'mod_wsgi.request_handler': 'wsgi-script', 'mod_wsgi.request_id': 'BEcA3rpJ6BU', 'mod_wsgi.request_start': '1569118486546180', 'mod_wsgi.script_name': '/wsgi', 'mod_wsgi.script_reloading': '1', 'mod_wsgi.script_start': '1569118486546812', 'mod_wsgi.thread_id': 0, 'mod_wsgi.thread_requests': 2L, 'mod_wsgi.total_requests': 3L, 'mod_wsgi.version': (4, 5, 17), 'wsgi.errors': , 'wsgi.file_wrapper': , 'wsgi.input': , 'wsgi.multiprocess': True, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}

Что я сделал не так?

...