我正在使用龙卷风,并有一堆映射到不同网址的处理程序。例如:
#mainfile.py
#imports
#...
application = tornado.web.Application([
(r"/", DefaultHandler),
(r"/somepath", SomepathHandler),
], debug=True)
if __name__ == "__main__":
tornado.options.parse_command_line()
port = int(os.environ.get("PORT", 8001))
application.listen(port)
tornado.ioloop.IOLoop.instance().start()
现在,在DefaultHandler和SomepathHandler中,我不喜欢错误消息的显示方式,所以我决定覆盖write_error方法,如下所示:
#DefaultHandler.py
class DefaultHandler(tornado.web.RequestHandler):
def write_error(self, status_code, **kwargs):
self.write("a nicer message")
def initialize(self):
#stuff
def get(self):
#more stuff, etc.
然后
#Somepathhandler.py
class SomepathHandler(tornado.web.RequestHandler):
def write_error(self, status_code, **kwargs):
self.write("a nicer message")
这肯定会继续与其他处理程序一起。我阅读了Tornado文档,看起来我应该是class tornado.web.RequestHandler(application, request, **kwargs)
的子类,但是还没有成功地做到这一点。我不太确定课程应该去哪里,如何让它注册我的申请?
谢谢!
答案 0 :(得分:1)
你快到了。如你所说,你只需要继承RequestHandler
。只要您将其导入到需要的位置,该类就可以进入任何文件。
class BaseHandler(tornado.web.RequestHandler):
def write_error(self, status_code, **kwargs):
self.write("a nicer message")
class DefaultHandler(BaseHandler):
def initialize(self):
pass
def get(self):
pass
class SomepathHandler(BaseHandler):
pass