Flask框架請求鉤子與request請求物件用法例項分析
阿新 • • 發佈:2020-01-09
本文例項講述了Flask框架請求鉤子與request請求物件。分享給大家供大家參考,具體如下:
請求鉤子
在客戶端和伺服器互動的過程中,有些準備工作或掃尾工作需要處理,比如:
- 在請求開始時,建立資料庫連線
- 在請求開始時,根據需求進行許可權校驗
- 在請求結束時,指定資料的互動格式
為了讓每個檢視函式避免編寫重複功能的程式碼,Flask提供了通用設施的功能,即請求鉤子。
請求鉤子是通過裝飾器的形式實現,Flask支援如下四種請求鉤子:
請求鉤子 | 描述 |
---|---|
before_first_request | 在處理第一個請求前執行 |
before_request | 在處理每一個請求前執行 |
after_request | 如果沒有丟擲錯誤,則在每一次請求後執行(接受一個引數:檢視函式做出的響應) |
teardown_request | 在每次請求後執行(接受一個引數:用來接受錯誤資訊) |
例:
from flask import Flask app = Flask(__name__) # 在第一次請求之前呼叫,可以在此方法內部做一些初始化操作 @app.before_first_request def before_first_request(): print("before_first_request") # 在每次請求之前呼叫,這時候已經有請求了,可能在這個方法裡面做請求的校驗 # 如果請求的校驗不成功,可以直接在此方法中進行響應,直接return之後那麼就不會執行檢視函式 @app.before_request def before_request(): print("before_request") # if 請求不符合條件: # return "laowang" # 在執行完檢視函式之後會呼叫,並且會把檢視函式所生成的響應傳入,可以在此方法中對響應做最後一步統一的處理 @app.after_request def after_request(response): print("after_request") response.headers["Content-Type"] = "application/json" return response # 請每一次請求之後都會呼叫,會接受一個引數,引數是伺服器出現的錯誤資訊 @app.teardown_request def teardown_request(e): print("teardown_request") @app.route('/') def index(): return 'index' if __name__ == '__main__': app.run(debug=True)
第一次訪問列印結果:
第二次訪問列印結果:
request物件
屬性 | 說明 | 型別 |
---|---|---|
data | 記錄請求的資料,並轉換為字串 | * |
form | 記錄請求中的表單資料 | MultiDict |
args | 記錄請求中的查詢引數 | MultiDict |
cookies | 記錄請求中的cookie資訊 | Dict |
headers | 記錄請求中的報文頭 | EnvironHeaders |
method | 記錄請求使用的HTTP方法 | GET/POST… |
url | 記錄請求的URL地址 | string |
files | 記錄請求上傳的檔案 | * |
獲取request物件:
例:
request.url # 請求的url地址 request.args.get("password")) # 獲取不到,返回none,request.args.get("password","aaa")) # 獲取不到,返回aaa
希望本文所述對大家基於Flask框架的Python程式設計有所幫助。