Flask 配置 404、500 错误页面

发布于: 2022-04-10 21:53:50 作者: 犬小哈 最新修订于: 2022-04-11 08:18:09

大家好,我是小哈~

本小节中给大家讲下 Flask 中如何快速配置 400、500 错误页面。

Flask 配置 404、500 错误页面

前言

一个 Web 应用中,经常会出现在某个资源由于某种原因被编辑删除,或者 Web 应用内部出现错误的情况,这时,当用户访问时,我们需要给予一个页面反馈,不然用户就会觉得莫名其妙。

配置 404 页面

当用户访问一个不存在、或者已经被删除的页面时,需要响应浏览器 404 错误码,并向用户展示该资源已经丢失页面。

首先,需要在 templates 模板文件夹下创建 404 页面,小哈这里创建了一个简单的 404 页面用作演示。

实际的 Web 应用中,通常是一个样式很好看的 404 页面,可以添加一些炫酷的动画啥的。

<!doctype html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <h1>404:该页面找不到啦!</h1>
  </body>
</html>

然后,在 Flask 应用中创建一个用于展示 404 错误页面的视图函数,并为其添加 @app.errorhandler(404) 装饰器,返回值是我们刚刚创建的 404.html 页面,以及 404 错误码:

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

配置成功后,重启 Flask 应用,当访问不存在的 URL 时,就会成功看到该 404 页面啦,比如访问一个不存在的 /quanxiaoha 路由:

Flask 配置  404 错误页面

配置 500 页面

500 错误页面的展示一般出现在 Web 应用内部出现了某个错误,配置方式和 404 差不多,同样的,先在 templates 模板文件夹下创建一个 500.html 页面用于展示。

<!doctype html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <h1>500:发生了内部错误!</h1>
  </body>
</html>

然后,在 Flask 应用中创建一个用于展示 500 错误页面的视图函数:

@app.errorhandler(500)
def show_500_page(e):
    return render_template('500.html'), 500

为了验证 500.html 错误页面能够被成功展示,小哈这里定义了一个会导致异常的视图函数:

@app.route('/index')
def index():
    # 这行代码执行后,会提示分母不能为零的错误
    i = 4 / 0
    return render_template('index.html', name='犬小哈教程')

然后,我们访问 /index URL, 会看到成功展示了 500.html 错误页面:

Flask 配置 500 错误页面

同时,在 Flask 控制台中确实看到了异常堆栈信息:

ZeroDivisionError: division by zero

说明 Flask 内部捕获了异常,并执行了展示 500 错误页面的视图函数。