欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > Flask 第十二课 -- 错误处理

Flask 第十二课 -- 错误处理

2024/10/23 14:46:37 来源:https://blog.csdn.net/qq_66544550/article/details/141434895  浏览:    关键词:Flask 第十二课 -- 错误处理

目录

一. 前言

二. 处理 HTTP 错误

三. 使用蓝图中的错误处理

四. 处理自定义错误

五. 全局错误处理

六. 使用 abort 函数

七. 渲染自定义错误页面


一. 前言

Flask 提供了灵活的错误处理机制,可以捕获并处理应用中的各种错误。

以下是详细的说明,涵盖了如何定义和处理错误,如何处理 HTTP 状态码以及如何处理自定义错误。

  1. 处理 HTTP 错误:使用 @app.errorhandler 装饰器定义针对特定 HTTP 状态码的错误处理函数。
  2. 蓝图中的错误处理:在蓝图中定义错误处理函数,允许模块化的错误处理。
  3. 自定义错误:定义自定义异常类,并在应用中捕获和处理这些异常。
  4. 全局错误处理:使用全局错误处理函数捕获所有未处理的异常。
  5. 使用 abort 函数:在视图函数中主动触发 HTTP 错误。
  6. 渲染自定义错误页面:为每个错误码创建自定义的 HTML 错误页面。

二. 处理 HTTP 错误

Flask 允许你定义针对特定 HTTP 状态码的错误处理函数。这些处理函数可以用于捕获并处理应用中的常见错误,如 404 页面未找到错误、500 服务器内部错误等。

app.py 文件代码:

from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')
def index():return 'Welcome to the homepage!'@app.errorhandler(404)
def page_not_found(error):return render_template('404.html'), 404@app.errorhandler(500)
def internal_server_error(error):return render_template('500.html'), 500if __name__ == '__main__':app.run(debug=True)

@app.errorhandler(404):捕获 404 错误,并返回自定义的 404 错误页面。

@app.errorhandler(500):捕获 500 错误,并返回自定义的 500 错误页面。

三. 使用蓝图中的错误处理

蓝图(Blueprints)也可以定义自己的错误处理函数。这使得每个模块可以有自己的错误处理逻辑。

auth/routes.py 文件代码:

from flask import Blueprint, render_templateauth = Blueprint('auth', __name__)@auth.errorhandler(404)
def auth_not_found(error):return render_template('auth_404.html'), 404

app.py 文件代码:

from flask import Flask
from auth.routes import authapp = Flask(__name__)
app.register_blueprint(auth, url_prefix='/auth')if __name__ == '__main__':app.run(debug=True)

四. 处理自定义错误

你可以定义自定义异常类,并在应用中捕获和处理这些异常。这允许你在应用中实现更复杂的错误处理逻辑。

自定义异常类:

class CustomError(Exception):pass

抛出自定义异常:

@app.route('/raise_custom_error')
def raise_custom_error():raise CustomError("This is a custom error.")

处理自定义异常:

@app.errorhandler(CustomError)
def handle_custom_error(error):return str(error), 400

五. 全局错误处理

如果你希望在整个应用中处理所有未处理的异常,可以使用全局错误处理函数。这些处理函数可以捕获所有未被显式捕获的错误。

app.py 文件代码:

@app.errorhandler(Exception)
def handle_exception(error):# 处理所有异常return f'An error occurred: {error}', 500

六. 使用 abort 函数

Flask 提供了一个 abort 函数,用于在视图函数中主动触发 HTTP 错误。这可以用于在特定条件下返回错误响应。

from flask import abort@app.route('/abort_example')
def abort_example():abort(403)  # 返回 403 Forbidden 错误

abort(403):触发 403 错误,自动调用对应的错误处理函数。

七. 渲染自定义错误页面

可以为每个错误码创建自定义的 HTML 页面,使得错误页面与应用的整体设计一致。

项目结构示例:

yourapp/
│
├── app.py
├── templates/
│   ├── 404.html
│   ├── 500.html
│   └── auth_404.html

自定义错误页面示例:

templates/404.html 文件代码:

<!doctype html>
<html lang="en">
<head><meta charset="utf-8"><title>Page Not Found</title>
</head>
<body><h1>404 - Page Not Found</h1><p>Sorry, the page you are looking for does not exist.</p>
</body>
</html>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com