Python Tornado请求处理程序映射

时间:2011-12-28 00:34:27

标签: python wsgi tornado web.py

我刚刚开始使用Tornado,我想知道如何定义映射,以便下面的所有请求都由一个处理程序处理。

  1. /产品/列表
  2. /产品/查找/ 123
  3. /产品/复制/ 123
  4. / products / {action} / {argument1} / {argument2} / {argument3}

    class Application(tornado.web.Application):
        def __init__(self):
            handlers = [
                (r"/", home.HomeHandler),
                (r"/products/", product.ProductHandler)]
    
    class ProductHandler(base.BaseHandler):   
      def get(self, action, *args):
              self.write("Action:" + action + "<br>")
                    for arg in args:
                        self.write("argument:" + arg + "<br>")
    

1 个答案:

答案 0 :(得分:1)

您不仅限于在网址匹配中列出一次RequestHandler,因此您可以执行以下两项操作之一:添加明确匹配您上面提到的每种模式的模式,如下所示:

def __init__(self):
    handlers = [
        (r"/", home.HomeHandler),
        (r"/products/list/([0-9]+)", product.ProductHandler)
        (r"/products/find/([0-9]+)", product.ProductHandler)
        (r"/products/copy/([0-9]+)", product.ProductHandler)
        (r"/products/(\w+)/(\w+)/(\w+)", product.ProductHandler)]

或者您可以说“任何以”产品“开头的网址都应该发送到产品处理程序,”就像这样:

def __init__(self):
    handlers = [
        (r"/", home.HomeHandler),
        (r"/products/list/(.*)", product.ProductHandler)

并在ProductHandler中自己解析变量列表。

相关问题