WSGI (python) 如何从HTML表单获取POST数据?

3 投票
1 回答
6399 浏览
提问于 2025-04-18 09:56

这是一个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

撰写回答