Tornado:如果在StaticFileHandler中找不到,如何发送默认文件

Tornado:如果在StaticFileHandler中找不到,如何发送默认文件,tornado,Tornado,当找不到请求的静态文件时,我想发回一个默认文件。例如,/images/dog.png->/images/default.png 在深入研究源代码之后 设置default\u filename用于请求,如/images/->/images/default.png有趣的验证绝对路径功能,如果不存在,为什么不覆盖此项以提供默认文件 导入龙卷风 导入tornado.web 导入tornado.ioloop 导入操作系统 默认的\u ABSPATH=os.path.dirname(os.path.ABSP

当找不到请求的静态文件时,我想发回一个默认文件。例如,
/images/dog.png
->
/images/default.png

在深入研究源代码之后


设置
default\u filename
用于请求,如
/images/
->
/images/default.png
有趣的
验证绝对路径
功能,如果不存在,为什么不覆盖此项以提供默认文件

导入龙卷风
导入tornado.web
导入tornado.ioloop
导入操作系统
默认的\u ABSPATH=os.path.dirname(os.path.ABSPATH(\u文件\u))
类StaticFileOrDefaultHandler(tornado.web.StaticFileHandler):
def验证绝对路径(自身、根、绝对路径):
尝试:
返回super(StaticFileOrDefaultHandler,self)。验证绝对路径(根,绝对路径)
除tornado.web.HTTPError为e外:
如果e.status_code==404:
返回os.path.join(默认路径为'DEFAULT.png')
提高e
app=tornado.web.Application([
(r'/(.*),StaticFileOrDefaultHandler,{'path':默认值_ABSPATH}),
])
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.listen(8888)
tornado.ioloop.ioloop.instance().start()
编辑 为避免覆盖
HTTPError(403)
如果引发的错误是
404
,请使用
状态代码检查

if (os.path.isdir(absolute_path) and
    self.default_filename is not None):