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

我可以像这样通过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)

最佳答案

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()方法,因为该字典的值是列表。

关于python - 迭代self.request.arguments的所有值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27606844/

10-17 01:20