文章内容

2024/11/8 0:01:02,作 者: 黄兵

Flask before_request 和 after_app_request 有什么区别,两者的作用?

before_requestafter_app_request 是 Flask 提供的两个钩子,用于在请求的不同阶段执行代码。它们的主要区别在于触发的时间点和作用:

1. before_request

  • 触发时机:在每次请求处理前执行。
  • 作用:通常用于在视图函数执行前准备数据或检查用户状态。
  • 典型用途
    • 验证用户身份或权限。
    • 设置全局变量(如项目菜单)供视图函数和模板使用。
    • 执行请求预处理逻辑,例如数据库连接的初始化。

示例代码:

@app.before_request
def before_request_func():
    g.user = get_current_user()  # 在请求开始时获取用户并存储在 g 对象中

2. after_app_request

  • 触发时机:在视图函数处理完成,并生成响应后执行。
  • 作用:通常用于在请求完成后进行清理工作。
  • 典型用途
    • 日志记录:记录请求的处理时间或其他信息。
    • 释放数据库连接或资源。
    • 修改响应数据(例如设置额外的响应头信息)。

示例代码:

@app.after_app_request
def after_request_func(response):
    response.headers['X-Custom-Header'] = 'Value'  # 添加自定义响应头
    return response

区别总结

  • before_request:主要用于在请求处理前准备数据或做验证。
  • after_app_request:主要用于在请求处理后做清理或修改响应内容。


其它相关推荐:

1、flask-oauthlib

2、Flask 用户指南

3、flask-jwt-oidc

4、Flask CLI 命令行接口

5、Flask如何获取User_Agent

分享到:

发表评论

评论列表