Flask框架請求鉤子與request請求對象用法實例分析
本文實例講述了Flask框架請求鉤子與request請求對象。分享給大家供大家參考,具體如下:
請求鉤子
在客戶端和服務(wù)器交互的過程中,有些準備工作或掃尾工作需要處理,比如:
- 在請求開始時,建立數(shù)據(jù)庫連接
- 在請求開始時,根據(jù)需求進行權(quán)限校驗
- 在請求結(jié)束時,指定數(shù)據(jù)的交互格式
為了讓每個視圖函數(shù)避免編寫重復(fù)功能的代碼,F(xiàn)lask提供了通用設(shè)施的功能,即請求鉤子。
請求鉤子是通過裝飾器的形式實現(xiàn),F(xiàn)lask支持如下四種請求鉤子:
請求鉤子 | 描述 |
---|---|
before_first_request | 在處理第一個請求前執(zhí)行 |
before_request | 在處理每一個請求前執(zhí)行 |
after_request | 如果沒有拋出錯誤,則在每一次請求后執(zhí)行(接受一個參數(shù):視圖函數(shù)做出的響應(yīng)) |
teardown_request | 在每次請求后執(zhí)行(接受一個參數(shù):用來接受錯誤信息) |
例:
from flask import Flask app = Flask(__name__) # 在第一次請求之前調(diào)用,可以在此方法內(nèi)部做一些初始化操作 @app.before_first_request def before_first_request(): print("before_first_request") # 在每次請求之前調(diào)用,這時候已經(jīng)有請求了,可能在這個方法里面做請求的校驗 # 如果請求的校驗不成功,可以直接在此方法中進行響應(yīng),直接return之后那么就不會執(zhí)行視圖函數(shù) @app.before_request def before_request(): print("before_request") # if 請求不符合條件: # return "laowang" # 在執(zhí)行完視圖函數(shù)之后會調(diào)用,并且會把視圖函數(shù)所生成的響應(yīng)傳入,可以在此方法中對響應(yīng)做最后一步統(tǒng)一的處理 @app.after_request def after_request(response): print("after_request") response.headers["Content-Type"] = "application/json" return response # 請每一次請求之后都會調(diào)用,會接受一個參數(shù),參數(shù)是服務(wù)器出現(xiàn)的錯誤信息 @app.teardown_request def teardown_request(e): print("teardown_request") @app.route('/') def index(): return 'index' if __name__ == '__main__': app.run(debug=True)
第一次訪問打印結(jié)果:
第二次訪問打印結(jié)果:
request對象
屬性 | 說明 | 類型 |
---|---|---|
data | 記錄請求的數(shù)據(jù),并轉(zhuǎn)換為字符串 | * |
form | 記錄請求中的表單數(shù)據(jù) | MultiDict |
args | 記錄請求中的查詢參數(shù) | 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程序設(shè)計有所幫助。
相關(guān)文章
python opencv 讀取本地視頻文件 修改ffmpeg的方法
今天小編就為大家分享一篇python opencv 讀取本地視頻文件 修改ffmpeg的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01Python實現(xiàn)將圖像轉(zhuǎn)換為ASCII字符圖
使用Python進行圖像處理,非??旖莘奖?,往往簡短幾行代碼就可以實現(xiàn)功能強大的效果。在這篇文章中,我們將使用Python將圖像轉(zhuǎn)換為ASCII字符照,感興趣的可以了解一下2022-08-08Python實現(xiàn)解析與生成JSON數(shù)據(jù)
JSON文件是一種輕量級的數(shù)據(jù)交換格式,它采用了一種類似于JavaScript語法的結(jié)構(gòu),可以方便地在不同平臺和編程語言之間進行數(shù)據(jù)交換,下面我們就來學(xué)習(xí)一下Python如何使用內(nèi)置的json模塊來讀取和寫入JSON文件吧2023-12-12PyTorch梯度裁剪避免訓(xùn)練loss nan的操作
這篇文章主要介紹了PyTorch梯度裁剪避免訓(xùn)練loss nan的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05