自定义错误页面 — Flask 文档
来自菜鸟教程
Flask/docs/1.1.x/patterns/errorpages
自定义错误页面
Flask 带有一个方便的 abort()
函数,可以提前中止带有 HTTP 错误代码的请求。 它还将为您提供一个简单的黑白错误页面,其中包含基本描述,但没什么特别的。
根据错误代码,用户实际看到此类错误的可能性较小或较大。
常见错误代码
以下错误代码是一些经常向用户显示的错误代码,即使应用程序运行正常:
- 404 未找到
- 好老的“伙计,你打错了那个 URL”的消息。 如此普遍,即使是互联网新手也知道 404 意味着:该死,我要找的东西不存在。 确保 404 页面上确实有一些有用的东西,至少是指向索引的链接,这是一个非常好的主意。
- 403 禁地
- 如果您的网站上有某种访问控制,则必须为不允许的资源发送 403 代码。 因此,请确保用户在尝试访问被禁止的资源时不会丢失。
- 第410章
- 你知道“404 Not Found”有一个叫“410 Gone”的兄弟吗? 很少有人真正实现这一点,但这个想法是以前存在的资源被删除了,答案是 410 而不是 404。 如果您不是从数据库中永久删除文档,而只是将它们标记为已删除,请帮用户一个忙,改用 410 代码并显示一条消息,表明他们正在寻找的内容已被永久删除。
- 500内部服务器错误
- 通常发生在编程错误或服务器过载时。 一个非常好的主意是在那里有一个漂亮的页面,因为您的应用程序 迟早会 失败(另请参阅: 应用程序错误 )。
错误处理程序
错误处理程序是一个函数,它在引发某种类型的错误时返回响应,类似于视图是一个在请求 URL 匹配时返回响应的函数。 它传递了正在处理的错误实例,这很可能是 HTTPException
。 除了明确的 500 错误之外,“500 内部服务器错误”的错误处理程序还将传递未捕获的异常。
错误处理程序使用 errorhandler()
装饰器或 register_error_handler()
方法注册。 可以为状态代码(如 404)或异常类注册处理程序。
响应的状态代码不会设置为处理程序的代码。 从处理程序返回响应时,请确保提供适当的 HTTP 状态代码。
在调试模式下运行时,不会使用“500 Internal Server Error”的处理程序。 相反,将显示交互式调试器。
以下是“404 Page Not Found”异常的示例实现:
使用 应用程序工厂模式 时:
示例模板可能是这样的:
将 API 错误作为 JSON 返回
将 Flask 用于 Web API 时,您可以使用与上述相同的技术将 JSON 响应返回到 API 错误。 abort()
使用 description
参数调用。 errorhandler()
将使用它作为 JSON 错误消息,并将状态代码设置为 404。