迭代self.request.arguments的所有值

时间:2014-12-22 16:44:44

标签: python tornado

是否有一种简单的方法可以访问龙卷风中的帖子中的所有值而无需为每个值指定参数?目前只是将它们打印到屏幕上。

我可以像这样迭代RequestHandler.request.arguments:

for f in self.request.arguments:
        details += "<hr/>" + f

我可以返回一个单独的值,如:

RequestHandler.get_argument("ArgumentName", default=None, strip=False)

但是如何动态返回通过表单发送的所有值?

我是否必须为每个人打电话get_argument

    for f in self.request.arguments:
        details += "<hr/>" + self.get_argument(f, default=None, strip=False)

这就是RequestHandler目前的样子:

class Sent(tornado.web.RequestHandler):
    def post(self):
        details = ""
        for f in self.request.arguments:
            details += "<hr/>" + self.get_argument(f, default=None, strip=False)
        self.write(details)

1 个答案:

答案 0 :(得分:3)

arguments它实际上是一个字典(这就是为什么迭代它只给你的键)所以你可以使用values()方法:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import textwrap
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web

from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)

class TestHandler(tornado.web.RequestHandler):
    def post(self):
        details = ""
        for f in self.request.arguments.values():
            details += "<hr/>" + ", ".join(f)
        self.write(details)

if __name__ == "__main__":
    tornado.options.parse_command_line()

    app = tornado.web.Application(handlers=[(r"/", TestHandler)])
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

我也使用join()方法,因为该字典的值是列表。