flask请求钩子(就是django的中间件)

发布时间 2023-10-04 12:21:52作者: 蕝戀

flask中的请求钩子就是域django的中间件类似,作用都是用于在请求前、后、响应前、后进行一些hook操作。

请求钩子装饰器

@app.before_request
  # 请求前会调用,一般可以用来做权限校验。
  
@app.brefore_first_request
  # 只在第一次请求的时候调用,可以做一些init初始化的动作。
  
@app.after_request
  # 请求后调用,也就是准备响应给客户端前
  # 要求被装饰的函数参数必须要有一个response接收,且函数必须返回response
  
@app.teardown_request
  # 执行视图函数后都会调用,无论是否发生异常。
  # 被装饰的函数必须要有一个error参数接收异常。

实例:

from flask import Flask

app = Flask(__name__)

"""
flask可以使用请求钩子对请求前、请求后(响应前)等进行hook处理。
"""


@app.before_request  # 这个和django的中间件的process_request是一样的
def process_request():
    # 这里在这里做权限校验
    print("请求前....")

@app.after_request  # 在执行完视图函数后会执行。
**# 必须接收一个response,然后必须返回response**
def after_request(response):
    print("响应前。。。")
    **return response**

@app.teardown_request
def teardown**(error):**
    """
    作用:拦截异常,做异常处理。
    # error有值就是有异常发生,没有值就是没有异常发生
    :param error:
    :return:
    """
    print("teardown_request")

@app.route('/demo1')
def demo1():
    print("demo1....")
    return "demo1"


if __name__ == '__main__':
    app.run(debug=True)

使用场景

  • 一般后期会配合g对象使用,进行一些用户登录校验的操作。g对象后面笔记会写。