在Tornado中,有一个选项可以覆盖请求处理程序的write_error函数来创建自定义错误页面。
在我的应用程序中有许多处理程序,我想在获得代码500时创建自定义错误页面。 我想通过创建Mixin类来实现这一点,我的所有处理程序都会继承这种混合。
我想问一下是否有更好的选择,也许有办法配置应用程序?
答案 0 :(得分:2)
我的解决方法看起来有点类似于您的想法。我有一个BaseHandler
,我的所有处理程序都继承了这个类。
class BaseHandler(tornado.web.RequestHandler):
def write_error(self, status_code, **kwargs):
"""Do your thing"""
答案 1 :(得分:1)
我就像你提到的一样。为了做到这一点,你只需要为每种错误信息创建一个类,然后覆盖 write_error ,如:
class BaseHandler(tornado.web.RequestHandler):
def common_method(self, arg):
pass
class SpecificErrorMessageHandler(tornado.web.RequestHandler):
def write_error(self, status_code, **kwargs):
if status_code == 404:
self.response(status_code,
'Resource not found. Check the URL.')
elif status_code == 405:
self.response(status_code,
'Method not allowed in this resource.')
else:
self.response(status_code,
'Internal server error on specific module.')
class ResourceHandler(BaseHandler, SpecificErrorMessageHandler):
def get(self):
pass
最终的类只会继承指定的。