错误处理
网站在处理用户的请求后,响应状态码不一定全部是 200,有可能出现 URL 不存在的 404 错误,或者没有权限访问的 403 错误等。针对这些非 200 的错误状态码,可以为每个错误状态码实现一个页面,在出现类似错误时,Flask 会自动返回一个包含错误状态码的页面。添加错误状态码的处理逻辑是通过 @app.errorhandler
装饰器实现的,也是属于钩子函数的一种,我们在 hooks.py
中添加以下代码。
def bbs_404_error(error):
return render_template("errors/404.html"), 404
def bbs_401_error(error):
return render_template("errors/401.html"), 401
def bbs_500_error(error):
return render_template("errors/500.html"), 500
下面在 app.py
中,将以上 3 个处理错误的钩子函数注册到 app 中,代码如下。
app.errorhandler(401)(hooks.bbs_401_error)
app.errorhandler(404)(hooks.bbs_404_error)
app.errorhandler(500)(hooks.bbs_500_error)
在浏览器中访问一个不存在的URL,如 http://127.0.0.1:5000/abc
,可以看到会显示 404 错误页面,如图 9-50 所示。

Figure 1. 图9-50 404错误页面