【Flask】项目中使用请求钩子的妙处有那些?
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                【Flask】项目中使用请求钩子的妙处有那些?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                在客戶端和服務器交互的過程中,有些準備工作或掃尾工作需要處理,比如:
- 在請求開始時,建立數據庫連接;
- 在請求開始時,根據需求進行權限校驗;
- 在請求結束時,指定數據的交互格式;
為了讓每個視圖函數避免編寫重復功能的代碼,Flask提供了通用設施的功能,即請求鉤子。
 請求鉤子是通過裝飾器的形式實現,Flask支持如下四種請求鉤子:
1、before_first_request
在處理第一個請求前執行,可以在此方法內部做一些初始化操作
2、before_request
在每一次請求之前調用,這時候已經有請求了,可能在這個方法里面做請求的校驗
 如果請求的校驗不成功,可以直接在此方法中進行響應,直接return之后那么就不會執行視圖函數
3、after_request
如果沒有拋出錯誤,在每次請求后執行
 接受一個參數:視圖函數作出的響應
 在此函數中可以對響應值在返回之前做最后一步修改處理
 需要將參數中的響應在此參數中進行返回
4、teardown_request
請每一次請求之后都會調用,會接受一個參數,參數是服務器出現的錯誤信息
案例
代碼塊:
from flask import Flask,request,render_templateapp=Flask(__name__)@app.before_first_request def before_first_request():#在處理第一個請求前執行print('服務器第一次接收請求的時候執行')@app.before_request def before_request():print('服務器每次接收請求之前都會先執行')#如果有return,后面的視圖函數就不再執行#return "提前結束"@app.after_request def after_request(response):#如果沒有拋出錯誤,在每次請求后執行#接收一個參數:視圖函數作出的響應#在此函數中可以對視圖函數的返回值再傳給客戶端做最后一部的修改處理#需要將參數中的響應在此參數中進行返回print('每次視圖函數執行完畢之后執行')return response@app.teardown_request def teardown_request(response):#在每次請求之后執行#接收一個參數:錯誤信息,如果有相關錯誤拋出print('請求結束的時候執行')@app.route('/') def func():return "OK"if __name__ == '__main__':app.run(debug=True)在第1次請求時的打印:
服務器第一次接收請求的時候執行
 服務器每次接收請求之前都會先執行
 每次視圖函數執行完畢之后執行
 請求結束的時候執行
在第2次請求時的打印:
服務器每次接收請求之前都會先執行
 每次視圖函數執行完畢之后執行
 請求結束的時候執行
總結
以上是生活随笔為你收集整理的【Flask】项目中使用请求钩子的妙处有那些?的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 【Flask】Jinja2模板的使用及控
- 下一篇: 【Flask】Jinja2之模板继承
