对于返回404的视图,不会调用Flask错误处理程序

时间:2016-09-16 00:28:33

标签: python flask

使用以下函数,我希望在视图返回404时调用错误处理程序。但它不会触发。为什么在视图返回404时不会调用404错误处理程序?

@app.errorhandler(404)
def error(e):
    return render_template('error.html'), 404


@app.route('/error/')
def error_test():
    return '', 404

2 个答案:

答案 0 :(得分:2)

您没有触发错误。您可以使用abort

from flask import abort

@app.route('/error/')
def error_test():
    abort(404)

答案 1 :(得分:1)

错误处理程序处理错误。如果您只是return '',404,那么您的函数已正常完成,它只返回了404 HTTP代码。没有错误,因此不会调用错误处理程序。

在python中,我们报告异常错误。如果出现问题,你就扔了。 Flask有特殊的基类异常类HTTPException。如果你抛出它,那么将使用适当的错误处理程序来渲染它。有关示例,请参阅HTTPException documentation。还有一堆预定义的异常,在您的情况下,您需要抛出NotFound