目录
特殊的装饰器
@app.before_request
: 在视图函数执行前执行@app.after_request
: 在视图函数执行后执行
from flask import Flask, session
app = Flask(__name__)
@app.before_request
def x1():
print("前")
@app.after_request
def x2(response):
print("后")
return response
@app.route('/index', methods=['GET', 'POST'])
def index():
print("视图函数执行")
return 'Index'
@app.route('/order', methods=['GET', 'POST'])
def order():
print("视图函数执行")
return 'order'
if __name__ == '__main__':
app.run()
多个中间件
from flask import Flask, session
app = Flask(__name__)
@app.before_request
def b1():
print("前1")
@app.before_request
def b2():
print("前2")
@app.after_request
def a1(response):
print("后1")
return response
@app.after_request
def a2(response):
print("后2")
return response
@app.route('/index', methods=['GET', 'POST'])
def index():
print("视图函数执行")
return 'Index'
@app.route('/order', methods=['GET', 'POST'])
def order():
print("视图函数执行")
return 'order'
if __name__ == '__main__':
app.run()
执行 :
前1
前2
视图函数执行
后2
后1
怎么执行的 ?
-
@app.before_request
self.before_request_funcs.setdefault(None, []).append(f)
- 创建一个列表.添加两个函数 :
before_request_funcs = { None: [b1, b2] }
- 创建一个列表.添加两个函数 :
-
@app.after_request
self.after_request_funcs.setdefault(None, []).append(f)
- 创建一个列表.添加两个函数 :
after_request_funcs = { None: [a1, a2] }
- 创建一个列表.添加两个函数 :
-
执行完
before_request
以后, 执行视图函数. -
先把
after_request
列表反转, 然后执行after_reqeust
原文地址:https://blog.csdn.net/qq_33962481/article/details/113610333
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。