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对象后面笔记会写。