Подкласс StaticFileHandler
и затем проверьте имена файлов в методе validate_absolute_path
. Выявите ошибки 404 или 403 для файлов, которые не хотите обслуживать.
from tornado import web
from tornado.web import HTTPError
class MyStaticFileHandler(web.StaticFileHandler):
def validate_absolute_path(self, root, absolute_path):
if absolute_path.endswith('.py'):
# raise 403 Forbidden error for all files ending with .py
raise HTTPError(403)
return super().validate_absolute_path(root, absolute_path)
А затем используйте этот класс в вашем обработчике URL.
Настройка ответа об ошибке:
Если вы установите debug=False
, то Tornado автоматически покажет соответствующее сообщение, связанное с кодом состояния, а не исключение.
Если вы хотите отправить собственный шаблон ошибки, вы можете сделать это:
...
def validate_absolute_path(self, root, absolute_path):
if absolute_path.endswith('.py'):
self.set_status(404)
# send a custom 404 response from an html file
with open("path/to/404.html", "r") as f:
self.write(f.read())
return None
return super().validate_absolute_path(root, absolute_path)