在客戶端和服務器交互的過程中,有些準備工作或掃尾工作需要處理,比如:
在請求開始時,建立數據庫連接; 在請求開始時,根據需求進行權限校驗; 在請求結束時,指定數據的交互格式;為了讓每個視圖函數避免編寫重復功能的代碼,Flask提供了通用設施的功能,即請求鉤子。
請求鉤子是通過裝飾器的形式實現,Flask支持如下四種請求鉤子:
代碼測試
from flask import Flaskfrom flask import abortapp = Flask(__name__)# 在第一次請求之前調用,可以在此方法內部做一些初始化操作@app.before_first_requestdef before_first_request(): print("before_first_request")# 在每一次請求之前調用,這時候已經有請求了,可能在這個方法里面做請求的校驗# 如果請求的校驗不成功,可以直接在此方法中進行響應,直接return之后那么就不會執行視圖函數@app.before_requestdef before_request(): print("before_request") # if 請求不符合條件: # return "laowang"# 在執行完視圖函數之后會調用,并且會把視圖函數所生成的響應傳入,可以在此方法中對響應做最后一步統一的處理@app.after_requestdef after_request(response): print("after_request") response.headers["Content-Type"] = "application/json" return response# 請每一次請求之后都會調用,會接受一個參數,參數是服務器出現的錯誤信息@app.teardown_requestdef teardown_request(e): print("teardown_request")@app.route('/')def index(): return 'index'if __name__ == '__main__': app.run(debug=True)
在第1次請求時的打?。?br />before_first_request
before_request
after_request
teardown_request在第2次請求時的打?。?br />before_request
after_request
teardown_request
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。
新聞熱點
疑難解答