制作一个非常简单的 Tornado 应用程序,但根据我对 Tornado 的理解,似乎不可能的事情正在发生。简而言之,我有以下内容RequestHandler
:
class CreateUserHandler(tornado.web.RequestHandler):
def post(self):
print self.request.body
print self.get_body_argument("email")
# Do other things
以下是打印的内容:
{"email":"[email protected] /cdn-cgi/l/email-protection","password":"password"}
WARNING:tornado.general:400 POST /user/create/ (::1): Missing argument email
因此,电子邮件显然存在于正文中,但是当尝试访问它时,会出现 400 错误。我可以手动解析请求正文,但 Tornado 的错误处理足够好,我希望尽可能避免重写它。
所以,我的基本问题是这怎么可能?它正在打印正确的请求正文,然后以某种方式无法访问它刚刚打印的字典。
get_body_argument
正如您所发现的,它适用于表单编码数据。 Tornado 对请求正文中的 JSON 数据几乎没有内置支持。您可以简单地:
import json
class CreateUserHandler(tornado.web.RequestHandler):
def post(self):
data = json.loads(self.request.body)
print data.get("email")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)