龙卷风自定义错误 - 有更好的方法吗?

时间:2014-11-12 10:23:30

标签: python tornado

在Tornado中,有一个选项可以覆盖请求处理程序的write_error函数来创建自定义错误页面。

在我的应用程序中有许多处理程序,我想在获得代码500时创建自定义错误页面。 我想通过创建Mixin类来实现这一点,我的所有处理程序都会继承这种混合。

我想问一下是否有更好的选择,也许有办法配置应用程序?

2 个答案:

答案 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

最终的类只会继承指定的。