2016-05-09 25 views
0

私は2つのハンドラを持っています。最初のもの(FooHandler)では、GETメソッドでフォームを表示し、POSTメソッドのフィールド値を取得します。その値を取得したら、URIを介して別のハンドラに渡したいと思います。その後、BarHandlerはそれをキャッチし、クエリを作成することができます。トルネード - URLから変数を取得

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でそれをキャッチするかどうかはわかりません。なにか提案を? documentationから

答えて

0

Any groups in the regex will be passed in to the handler’s get/post/etc methods as arguments.

あなたはハンドラへのパスの一部を渡したい場合は、あなたの正規表現パスでグループを使用する必要があります。

あなたのパスを定義する必要がありますように:

(r"/query/(\d+)", BarHandler) 
関連する問題