在客戶端和服務器互動的程序中,有些準備作業或掃尾作業需要處理,比如:
-
在請求開始時,建立資料庫連接;
-
在請求開始時,根據需求進行權限校驗;
-
在請求結束時,指定資料的互動格式;
為了讓每個視圖函式避免撰寫重復功能的代碼,Flask提供了通用設定的功能,即請求鉤子,
請求鉤子是通過裝飾器的形式實作,Flask支持如下四種請求鉤子:
-
before_first_request
-
在處理第一個請求前執行[專案初始化時的鉤子]
-
-
before_request
-
在每次請求前執行
-
如果在某修飾的函式中回傳了一個回應,視圖函式將不再被呼叫
-
-
after_request
-
如果沒有拋出錯誤,在每次請求后執行
-
接受一個引數:視圖函式作出的回應
-
在此函式中可以對回應值在回傳之前做最后一步修改處理
-
需要將引數中的回應在此引數中進行回傳
-
-
teardown_request:
-
在每次請求后執行
-
接受一個引數:錯誤資訊,如果有相關錯誤拋出
-
需要設定flask的配置DEBUG=False,teardown_request才會接受到例外物件,
-
from flask import Flask,make_response app = Flask(__name__) @app.before_first_request def first_request(): print("1. 專案啟動以后,首次被請求時,會自動執行[專案全域初始化作業]") @app.before_request def before_request(): print("2. 每次客戶端請求時,都會自動執行, 常用于記錄訪問日志,進行權限判斷,身份識別,訪問限流...") @app.after_request def after_request(response): #來自視圖的回傳值response print("4. 每次視圖執行以后,會自動執行") # after_request執行以后,必須要回傳結果給客戶端!! return response @app.teardown_request def teardown_request(exc): print("5. after_request完成以后,如果有發生例外,在關閉DEBUG模式的情況下可以接受例外物件,進行例外的記錄,例外通知") print(exc) @app.route("/") def set_session(): print("3. 視圖執行了.......") 1/0 #為了測驗teardown_request,報錯 return "ok" if __name__ == '__main__': app.run(debug=False)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/225050.html
標籤:其他
上一篇:初學java 學生管理系統——v04版本 改用web
下一篇:JVM全方位解讀(附面試題)
