如何在类上下文中使用自定义错误页面?

时间:2017-01-20 08:57:54

标签: python flask

Flask文档clearly explains如何通过errorhandler()装饰器创建自定义错误页面。

当我的Flask应用程序属于类时,如何使用自定义页面,因为装饰器不能与方法一起使用?一个例子:

import flask

class Webserver:
    def __init__(self):
        app = flask.Flask(__name__)
        app.add_url_rule('/', view_func=self.hello)
        app.run()

    def hello(self):
        return 'hello'

if __name__ == "__main__":
    Webserver()

add_url_rule()的使用绕过了相同的路由问题,是否有errorhandler()的等价物?

1 个答案:

答案 0 :(得分:3)

有一个等效的注册错误处理程序,名为app.register_error_handler()

class Webserver:
    def __init__(self):
        app = flask.Flask(__name__)
        app.add_url_rule('/', view_func=self.hello)
        app.register_error_handler(404, self.not_found_handler)
        app.run()

即便如此,errorhandler()只需要传递绑定方法。例如,如果要将方法注册为404 Not Found HTTP代码的处理程序,只需为404创建装饰器对象,并使用bound方法作为参数调用该方法:

class Webserver:
    def __init__(self):
        app = flask.Flask(__name__)
        app.add_url_rule('/', view_func=self.hello)
        app.errorhandler(404)(self.not_found_handler)
        app.run()

这是有效的,因为所有@app.errorhandler()装饰器都会注册可调用的,因此返回值仍然是原始可调用的。您可以忽略此处,仅将其用于注册操作。

同样适用于app.route()装饰者。