Tornado静态文件的自定义错误处理程序

问题描述:

如何显示静态文件的自定义404错误页面?Tornado静态文件的自定义错误处理程序

在我目前的应用处理程序如下

[ 
    (r'/(favicon.ico)', tornado.web.StaticFileHandler, {"path": mypath}), 
    (r'/foo',FooHandler), 
    (r'/bar',BarHandler), 
    (r'/(.*)',ErrorHandler), 
] 

我已经加入最后一个模式,这是我的错误处理程序

class ErrorHandler(BaseHandler): 

    def get(self,d): 
     self.status_code = 404 
     self.show404(d) 

如果我访问http://localhost/abc我得到我的自定义404页

但如果我试图得到http://localhost/static/abc.js我得到像下面这样的丑陋错误

line 2286, in validate_absolute_path 
raise HTTPError(404) 
HTTPError: HTTP 404: Not Found 

有没有什么办法得到这个工作?如何显示我的静态文件的自定义错误页面

这有点棘手;您需要继承StaticFileHandler并覆盖其write_error方法,然后使用static_handler_class应用程序设置来安装该类。