17

tornado * WebフレームワークのHTTPRequestクラスは、GET引数とPOST引数をリストにマップするのに役立ちます。理由を理解しています-特定の引数名が複数回使用されている場合。しかし、一部のRequestHandlerにとって、これは苦痛です。たとえば、jsonオブジェクトを渡して、サーバー上でそのまま解析したい場合です。

変更されていないjsonをトルネード/サイクロンサーバーに送信できるように、リストへのマップの動作を無効にする最も簡単な方法は何ですか?

*サイクロン、実際には、ここで実装の違いがある場合に備えて。

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

私は「あなたは運が悪い」と行くつもりです。問題のクラスを書き直すことはできますが(それは面白くないようです)、それを除けば、多くのオプションが表示されません。


私はただdictの理解を使用します。

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