WSGI (python) 如何从HTML表单获取POST数据?
这是一个HTML表单,用来“获取”/1.wsgi
<form action="/1.wsgi" method="get">
<input type="text" name="one">
<input type="submit" value="Send">
</form>
这是我的1.wsgi脚本:
from cgi import parse_qs
import os
def application(environ, start_response):
o = parse_qs(environ['QUERY_STRING'])
oo = o.get('one', [''])[0]
start_response('200 OK', [('content-type', 'text/html')])
yield oo
运行得很好,但是我想使用POST
方法,而不是GET
。我知道在HTML表单中,"get"
需要改成"post"
,但在WSGI脚本中我到底需要做什么呢?
1 个回答
4
POST请求会把编码后的表单数据放在请求的主体部分;你可以从 wsgi.input
流中读取 CONTENT_LENGTH
字节的数据:
try:
request_body_size = int(environ.get('CONTENT_LENGTH', 0))
except (ValueError):
request_body_size = 0
request_body = environ['wsgi.input'].read(request_body_size)
o = parse_qs(request_body)
这里假设你还是在使用默认的表单编码方式,也就是 application/x-www-form-urlencoded
。