35

私はこれを試しています:

favicon_path = '/path/to/favicon.ico'

settings = {'debug': True, 
            'static_path': os.path.join(PATH, 'static')}

handlers = [(r'/', WebHandler),
            (r'/favicon.ico', tornado.web.StaticFileHandler, {'path': favicon_path})]

application = tornado.web.Application(handlers, **settings)
application.listen(port)
tornado.ioloop.IOLoop.instance().start()

しかし、それはfavicon.ico私のstatic_pathにあるものを提供し続けます(favicon.ico上記のように、2つの別々のパスに2つの異なるがありますが、の1つをオーバーライドできるようにしたいですstatic_path)。

4

3 に答える 3

56

static_pathアプリの設定から削除します。

次に、ハンドラーを次のように設定します。

handlers = [
            (r'/(favicon\.ico)', tornado.web.StaticFileHandler, {'path': favicon_path_dir}),
            (r'/static/(.*)', tornado.web.StaticFileHandler, {'path': static_path_dir}),
            (r'/', WebHandler)
]
于 2012-04-15T20:23:21.383 に答える
6

favicon.icoを括弧で囲み、正規表現でピリオドをエスケープする必要があります。あなたのコードは

favicon_path = '/path/to/favicon.ico' # Actually the directory containing the favicon.ico file

settings = {
    'debug': True, 
    'static_path': os.path.join(PATH, 'static')}

handlers = [
    (r'/', WebHandler),
    (r'/(favicon\.ico)', tornado.web.StaticFileHandler, {'path': favicon_path})]

application = tornado.web.Application(handlers, **settings)
application.listen(port)
tornado.ioloop.IOLoop.instance().start()
于 2014-06-02T23:31:04.417 に答える
0

それを行うには2つの方法があります。

1.設定でstatic_url_prefixを使用します。

例えば

settings = dict(
    static_path=os.path.join(os.path.dirname(__file__), 'static'),
    static_url_prefix="/adtrpt/static/",
)

2.カスタムハンドラーを使用します

カスタムハンドラーをハンドラーに追加します

handlers.append((r"/adtrpt/static/(.*)", MyStaticFileHandler, {"path": os.path.join(os.path.dirname(__file__), 'static')}))

次に、カスタムメソッドを実装します。

class StaticHandler(BaseHandler):
    def get(self):
        path = self.request.path
        print(path)
        self.redirect(BASE_URI + path)
于 2019-01-24T10:30:43.603 に答える