2

给定以下(示例)处理程序(取自此处):

handlers = [
            (r"/", MainHandler),
            (r"/auth/login", AuthLoginHandler),
            (r"/auth/logout", AuthLogoutHandler),
        ]

有没有办法以编程方式在单独的页面上打印处理程序?我在想一些事情:

handlers = [
            (r"/", MainHandler),
            (r"/auth/login", AuthLoginHandler),
            (r"/auth/logout", AuthLogoutHandler),
            (r"/routes", RoutePrinter),
        ]

...

class RoutePrinter(...):
    def get(self):
       self.write(str(self.application.routes))

这给了我 [(<_sre.SRE_Pattern object at 0x216c130>, [, , , , , , , , , , , , , , , , , , , , , , ])]

我尝试了一些不同的访问器,但并没有真正帮助。是否可以生成我的路线列表?

编辑

基于进一步的搜索,我遇到了从这些正则表达式对象打印模式/标志的方法。问题是我很难理解如何解除它们的嵌套,因为它不像self.application.handlers[0][0]then那样直观self.application.handlers[1][0]。第二个是“超出范围”,即使它看起来应该是“/auth/login”。

我错过了什么?

4

1 回答 1

3

What about this?

[handler.regex.pattern for handler in self.application.handlers[0][1]]

If you also want the names of the handler classes:

[(handler.regex.pattern, handler.handler_class) for handler in self.application.handlers[0][1]]
于 2012-12-27T21:05:32.300 回答