我正在编写一个非常简单的龙卷风网络应用程序:
class MainHandler1(tornado.web.RequestHandler):
def get(self):
self.render("page1.html")
class MainHandler2(tornado.web.RequestHandler):
def get(self):
self.render("page2.html")
...
application = tornado.web.Application([(r'/route1', MainHandler1), (r'/route2', MainHandler2)], **settings)
如你所见,我有2条路线,我需要为这些路线创建2个类。 有没有办法管理具有相同类的多个路由?
由于
答案 0 :(得分:1)
是的,只需在路线规范中使用相同的类:
routes = [
(r'/route1', MainHandler1),
(r'/route2', MainHandler1)
]
application = tornado.web.Application(routes, **settings)
编辑重新"我将如何区分MainHandler1"中的route1和route2:
我建议你不要将你的处理程序绑定到任何显式路由;而是尝试根据路线的可变部分对其进行参数化。如果我们采用您的原始示例,您有两条不同的路线,并根据该数字提供不同的模板,您可能会遇到类似的情况:
class MainHandler(tornado.web.RequestHandler):
def get(self, page_num):
self.render("page{}.html".format(page_num))
routes = [
(r'/route(\d+)', MainHandler),
]
application = tornado.web.Application(routes, **settings)
通过这种方式,您可以定义一条路线,但实际上可以拥有尽可能多的模板。另一方面,如果您对每条路线需要完全不同的响应,那么将它们保存在单独的处理程序中要好得多。