使用以下函数,我希望在视图返回404时调用错误处理程序。但它不会触发。为什么在视图返回404时不会调用404错误处理程序?
@app.errorhandler(404)
def error(e):
return render_template('error.html'), 404
@app.route('/error/')
def error_test():
return '', 404
答案 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。