Now that python's cgi module is scheduled to be removed, I am trying to move to wsgi. My first step is to try using from wsgiref.handlers import CGIHandler
.
I have managed to get it to work by collecting GET arguments using args=environ('QUERY_STRING')
, but I have not been able to get: urlparse(environ['wsgi.input'].readline().decode('utf-8'))
or several similar alternatives (for example: urlparse(environ['wsgi.input'].read(length).decode('utf-8'))
to provide QUERY_STRING arguments.
How do I make this test script work:
#!/usr/bin/env python3
from wsgiref.handlers import CGIHandler
from urllib.parse import urlparse, parse_qs
def app2(environ, start_response):
status = '200 OK'
headers = [('Content-type', 'text/plain')]
start_response(status, headers)
form = urlparse(environ['wsgi.input'].readline())
body += "type(form.query): %s -- %s\n"%(str(type(form.query)),str(form.query))
query = parse_qs(form.query)
body += "type(form.params): %s -- %s\n"%(str(type(form.params)),str(form.params))
params = parse_qs(form.params)
body += 'query: %s\n'%(str(query))
body += 'params: %s\n'%(str(params))
return [body.encode('utf-8')]
if __name__ == "__main__":
CGIHandler().run(app2)
Quick and dirty:
post_data = json.load(environ['wsgi.input'])
Then simply refer to:
post_data['field_name']