1

私はトルネードを使用しており、さまざまな URL にマップするハンドラーがたくさんあります。例えば ​​:

#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)ですが、成功していません。クラスをどこに配置すればよいかよくわかりません。アプリケーションに登録するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

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
于 2012-07-03T03:54:49.027 に答える