您好,登錄后才能下訂單哦!
本文實例講述了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)
第一次訪問打印結果:
第二次訪問打印結果:
屬性 | 說明 | 類型 |
---|---|---|
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程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。