# 不加返回值
from flask import Flask from flask abort app = Flask(__name__) # 在第一次请求之前调用,可以在此方法内部做一些初始化操作 @app.before_first_request def before_first_request(): print("第一次请求之前调用") 在每一次请求之前调用,这时候已经有请求了,可能在这个方法里面做请求的校验 # 如果请求的校验不成功,可以直接在此方法中进行响应,直接return之后那么就不会执行视图函数 @app.before_request before_request1(): 前1)
此处如果加上 return "返回值" 就不会执行前2 跟 前 3 直接返回 后1 后2 后3 @app.before_request before_request2(): 前2) @app.before_request before_request3(): 前3) 在执行完视图函数之后会调用,并且会把视图函数所生成的响应传入,可以在此方法中对响应做最后一步统一的处理 @app.after_request after_request1(response): 后1) response.headers["Content-Type"] = "application/json" return response @app.after_request after_request2(response): 后2 response @app.after_request after_request3(response): 后3 response 请每一次请求之后都会调用,会接受一个参数,参数是服务器出现的错误信息 @app.teardown_request teardown_request(e): 请每一次请求之后都会调用,会接受一个参数,参数是服务器出现的错误信息) @app.route('/') index(): return index' if __name__ == __main__: app.run(debug=True)
## 输出
第一次请求之前调用
"前1
前2
前3
后3
后2
后1
请每一次请求之后都会调用,会接受一个参数,参数是服务器出现的错误信息