2012-07-02 39 views
1

我正在使用龍捲風,並有一堆處理程序映射到不同的網址。例如:現在在所有Tornado處理程序中共享write_error方法?

#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),但尚未成功完成。我不太確定班級應該去哪裏,我怎樣才能讓它註冊我的申請?

謝謝!

回答

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 
相關問題