特殊的装饰器
@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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)