flask框架中勾子函數(shù)的使用詳解
在客戶端和服務器交互的過程中,有些準備工作或掃尾工作需要處理,比如:
- 在請求開始時,建立數(shù)據(jù)庫連接;
- 在請求開始時,根據(jù)需求進行權限校驗;
- 在請求結束時,指定數(shù)據(jù)的交互格式;
為了讓每個視圖函數(shù)避免編寫重復功能的代碼,F(xiàn)lask提供了通用設施的功能,即請求鉤子。
請求鉤子是通過裝飾器的形式實現(xiàn),F(xiàn)lask支持如下四種請求鉤子:
- before_first_request
- 在處理第一個請求前執(zhí)行
- before_request
- 在每次請求前執(zhí)行
- 如果在某修飾的函數(shù)中返回了一個響應,視圖函數(shù)將不再被調用
- after_request
- 如果沒有拋出錯誤,在每次請求后執(zhí)行
- 接受一個參數(shù):視圖函數(shù)作出的響應
- 在此函數(shù)中可以對響應值在返回之前做最后一步修改處理
- 需要將參數(shù)中的響應在此參數(shù)中進行返回
- teardown_request
- 在每次請求后執(zhí)行
- 接受一個參數(shù):錯誤信息,如果有相關錯誤拋出
代碼測試
from flask import Flask
from flask import abort
app = Flask(__name__)
# 在第一次請求之前調用,可以在此方法內部做一些初始化操作
@app.before_first_request
def before_first_request():
print("before_first_request")
# 在每一次請求之前調用,這時候已經有請求了,可能在這個方法里面做請求的校驗
# 如果請求的校驗不成功,可以直接在此方法中進行響應,直接return之后那么就不會執(zhí)行視圖函數(shù)
@app.before_request
def before_request():
print("before_request")
# if 請求不符合條件:
# return "laowang"
# 在執(zhí)行完視圖函數(shù)之后會調用,并且會把視圖函數(shù)所生成的響應傳入,可以在此方法中對響應做最后一步統(tǒng)一的處理
@app.after_request
def after_request(response):
print("after_request")
response.headers["Content-Type"] = "application/json"
return response
# 請每一次請求之后都會調用,會接受一個參數(shù),參數(shù)是服務器出現(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)
在第1次請求時的打?。?br /> before_first_request
before_request
after_request
teardown_request在第2次請求時的打印:
before_request
after_request
teardown_request
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Flask框架中request、請求鉤子、上下文用法分析
- Flask之請求鉤子的實現(xiàn)
- Flask框架工廠函數(shù)用法實例分析
- flask框架視圖函數(shù)用法示例
- Flask框架實現(xiàn)給視圖函數(shù)增加裝飾器操作示例
- flask框架jinja2模板與模板繼承實例分析
- Flask框架模板繼承實現(xiàn)方法分析
- Flask框架模板渲染操作簡單示例
- Python的Flask框架中@app.route的用法教程
- Python Web框架Flask下網(wǎng)站開發(fā)入門實例
- Python的Flask框架與數(shù)據(jù)庫連接的教程
- Flask框架鉤子函數(shù)功能與用法分析
相關文章
python實現(xiàn)在windows下操作word的方法
這篇文章主要介紹了python實現(xiàn)在windows下操作word的方法,涉及Python操作word實現(xiàn)打開、插入、轉換、打印等操作的相關技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
Django1.7+python 2.78+pycharm配置mysql數(shù)據(jù)庫
這篇文章主要介紹了Django1.7+python 2.78+pycharm配置mysql數(shù)據(jù)庫的相關資料,需要的朋友可以參考下2016-10-10
django框架中ajax的使用及避開CSRF 驗證的方式詳解
這篇文章主要介紹了django框架中ajax的使用及避開CSRF 驗證的方式,結合實例形式分析了Django框架ajax后臺交互與排除驗證csrf相關操作技巧,需要的朋友可以參考下2019-12-12

