为什么这个 Flask 函数需要一个错误参数?

Why does this Flask function take an error argument?

我正在学习 python 并且我正在尝试建立一个网站。我正处于您需要处理错误的地步,但我不理解 Flask 文档中给出的示例:

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

为什么您需要键入 not_found(error): 而不是 not_found():

@app.errorhandler() 未注册常规视图。它注册了一个error handler。错误处理程序被传递给错误对象,因此它们可以确定如何最好地生成替代视图。来自文档:

An error handler is a function that returns a response when a type of error is raised, similar to how a view is a function that returns a response when a request URL is matched. It is passed the instance of the error being handled, which is most likely a HTTPException.

(大胆强调我的)

您在request对象上找不到此错误信息,因为此类错误是由处理当前请求的普通视图产生错误引起的。

正常路径是:

  • 请求进来
  • Flask 找到 运行 的正确视图并调用它
  • 视图遇到问题并通过调用 abort(404)
  • 引发 404 未找到错误
  • Flask 找到匹配的错误处理程序并使用错误对象调用它。
  • 错误处理程序响应被发送回浏览器。