17

tornado* Web 框架中的 HTTPRequest 类有助于将 GET 和 POST 参数映射到列表。我理解为什么 - 如果多次使用给定的参数名称。但是对于一些 RequestHandlers 来说,这是一种痛苦。例如,如果我想传递一个 json 对象并在服务器上按原样解析它。

禁用映射到列表行为的最直接方法是什么,以便我可以将未更改的 json 发送到龙卷风/旋风服务器?

*Cyclone,实际上,以防这里存在实施差异。

4

2 回答 2

39

self.request.arguments您应该使用访问器函数,而不是直接访问:

self.get_argument("ID", default=None, strip=False)

这将返回单个项目。

如果您想将参数转换为 JSON 对象,您可以很容易地做到这一点:

json.dumps({ k: self.get_argument(k) for k in self.request.arguments })
于 2012-04-27T21:47:24.293 回答
4

我会说“你不走运”。您可以重新编写有问题的课程(看起来这不会很有趣),但除此之外我看不到很多选择。


我只会使用字典理解。

{k:''.join(v) for k,v in  self.request.arguments.iteritems()}
于 2012-04-27T18:35:06.317 回答