龙卷风 - 从URL获取变量

时间:2016-05-09 09:08:11

标签: tornado

我有两个处理程序。在第一个(FooHandler)中,我在GET方法中显示一个表单,并获取字段的值,POST方法。一旦获得该值,我想通过URI将其传递给另一个处理程序。然后BarHandler抓住它并且能够进行查询。

class FooHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("templates/fooForm.html")


    def post(self):
        var1 = self.get_argument('var1') #number

        self.redirect('/query/{}'.format(var1))


class BarHandler(tornado.web.RequestHandler):
    def get(self, var1):
        q = Query....

def main():
    io_loop = tornado.ioloop.IOLoop.instance()
    connect("test", host="localhost", port=27017, io_loop=io_loop)

    app = tornado.web.Application(
    [
        (r"/", FooHandler),
        (r"/query/\d+", BarHandler)
        ], debug = True,
    )
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

if __name__ == "__main__":
    main()

我收到此错误:

    Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/tornado/web.py", line 1443, in _execute
    result = method(*self.path_args, **self.path_kwargs)
TypeError: get() takes exactly 2 arguments (1 given)

我不确定如何从FooHandler传递var1并在BarHandler中捕获它。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

来自documentation

  

正则表达式中的任何组都将作为参数传递给处理程序的get / post / etc方法。

如果要将路径的一部分传递给处理程序,则需要在正则表达式路径中使用组。

您应该将路径定义为:

(r"/query/(\d+)", BarHandler)
相关问题