我有一个非常简单的扭曲脚本,您可以在其中处理POST请求:
class FormPage(Resource):
isLeaf = True
def render_GET(self, request):
return b"""<html><body><form method="POST"><input name="form-field" type="text" /></form></body></html>"""
def render_POST(self, request):
return '<html><body>You submitted: %s</body></html>' % (cgi.escape(request.args["form-field"][0]),)
factory = Site(FormPage())
reactor.listenTCP(80, factory)
reactor.run()
但无论何时我运行并填写方框,我都会得到错误:
builtins.KeyError: 'form-field'
有人可以告诉我为什么会这样吗?谢谢!
答案 0 :(得分:0)
我使用request.content.read()
找到了一个解决方案def render_POST(self, request):
return '<html><body>You submitted: %s</body></html>' % (request.content.read())
它可能不是最好的解决方案,但它对我有用。请评论如果您有更好的解决方案,谢谢!
答案 1 :(得分:0)
找到解决方案。我被困在这里很长一段时间做了&#34; O&#39; Reily Twisted&#34;在Python3中。这对我有用:
def render_POST(self, request):
return_value = "<html><body>You submitted: %s </body></html>" % (cgi.escape(str(request.args[b"form-field"][0], 'utf-8')))
return str.encode(return_value)
我想我遇到麻烦的第一个原因是可以在python代码中提取的表单字段是字节字符串。只有在我检查了请求之后我意识到了这一点。我想在python2中,它是常规字符串。