给出以下(样本)处理程序(取自here):
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]
那样直观self.application.handlers[1][0]
。第二个是“超出范围”,即使它看起来应该是“/ auth / login”。
我错过了什么?
答案 0 :(得分:3)
这个怎么样?
[handler.regex.pattern for handler in self.application.handlers[0][1]]
如果您还想要处理程序类的名称:
[(handler.regex.pattern, handler.handler_class) for handler in self.application.handlers[0][1]]