首页 > 解决方案 > 为什么这个 Flask 函数需要一个错误参数?

问题描述

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

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

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

标签: pythonflaskhttp-status-code-404

解决方案


@app.errorhandler()不注册常规视图。它注册一个错误处理程序。错误处理程序被传递错误对象,因此它们可以确定如何最好地生成备用视图。从文档中:

错误处理程序是一个在引发某种类型的错误时返回响应的函数,类似于视图是一个在请求 URL 匹配时返回响应的函数。它传递了正在处理的错误的实例,这很可能是一个HTTPException.

(粗体强调我的)

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

正常路径是:

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

推荐阅读