现在python的cgi模块预定要去掉了,我正在尝试迁移到wsgi。我的第一步是尝试使用
from wsgiref.handlers import CGIHandler
.
我已经设法通过使用
args=environ('QUERY_STRING')
收集GET参数来使其工作,但我无法获得:urlparse(environ['wsgi.input'].readline().decode('utf-8'))
或几个类似的替代方案(例如:urlparse(environ['wsgi.input'].read(length).decode('utf-8'))
提供QUERY_STRING参数。
如何让这个测试脚本工作:
#!/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)
又快又脏:
post_data = json.load(environ['wsgi.input'])
...那么简单参考一下:
post_data['field_name']