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()
的等价物?
答案 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()
装饰者。