我有两个处理程序。在第一个(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中捕获它。有什么建议吗?
答案 0 :(得分:0)
正则表达式中的任何组都将作为参数传递给处理程序的get / post / etc方法。
如果要将路径的一部分传递给处理程序,则需要在正则表达式路径中使用组。
您应该将路径定义为:
(r"/query/(\d+)", BarHandler)