首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Twisted中处理POST请求

如何在Twisted中处理POST请求
EN

Stack Overflow用户
提问于 2016-05-24 03:03:54
回答 2查看 658关注 0票数 2

我有一个非常简单的扭曲脚本,你可以在其中处理POST请求:

代码语言:javascript
复制
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()

但每当我运行此程序并填写该框时,我都会得到错误信息:

代码语言:javascript
复制
builtins.KeyError: 'form-field'

有人能告诉我为什么会这样吗?谢谢!!

EN

回答 2

Stack Overflow用户

发布于 2016-05-25 01:38:31

我找到了一个使用request.content.read()的解决方案

代码语言:javascript
复制
def render_POST(self, request):
    return '<html><body>You submitted: %s</body></html>' % (request.content.read())

这可能不是最好的解决方案,但它对我很有效。如果你有更好的解决方案,请发表意见,谢谢!

票数 0
EN

Stack Overflow用户

发布于 2017-09-11 01:42:43

找到了解决方案。我在Python3里做“O‘’Reily”被困了很长一段时间。以下是对我有效的方法:

代码语言:javascript
复制
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中,它是一个普通的字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37398611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档