从 python cgi 到 wsgi - 捕获查询参数

问题描述 投票:0回答:1

现在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)
python python-3.x cgi wsgi
1个回答
0
投票

又快又脏:

post_data = json.load(environ['wsgi.input'])

...那么简单参考一下:

post_data['field_name']

© www.soinside.com 2019 - 2024. All rights reserved.