欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flask??請求鉤子的實現(xiàn)

 更新時間:2021年11月26日 08:36:27   作者:tigeriaf  
這篇文章主要給大家分享了Flask請求鉤子的實現(xiàn),在客戶端和服務(wù)器交互的過程中,有些準備工作或掃尾工作需要處理,比如:在請求開始時,建立數(shù)據(jù)庫連接;在請求開始時,根據(jù)需求進行權(quán)限校驗;在請求結(jié)束時,指定數(shù)據(jù)的交互格式;下面來看看文章詳細介紹內(nèi)容吧

在 Web 應(yīng)用中,有時需要在響應(yīng)請求前或者響應(yīng)請求后做一些處理,為了讓每個視圖函數(shù)避免編寫重復(fù)功能的代碼,F(xiàn)lask 提供了請求鉤子,它們可以用來注冊在請求處理的不同階段執(zhí)行的處理函數(shù),我們就可以輕易的對請求進行預(yù)處理和后處理。

Flask 常用請求鉤子如下:

  • before_first_request:在處理第一個請求之前運行
  • before_request:在每次請求之前運行,如果沒有未處理的異常拋出,會在每個請求結(jié)束后運行
  • after_request:如果沒有未處理的異常拋出,在每次請求結(jié)束后運行
  • teardown_request:即使有未處理的異常拋出,也會在每個請求結(jié)束后運行

這些請求鉤子是使用裝飾器方式實現(xiàn),用法也非常簡單,使用起來和app.route()裝飾器基本相同。下面使用這些請求鉤子裝飾一些函數(shù),用于在每次請求前后做一些處理,為了方便理解,只是單純打印一句話。

@app.before_first_request

def before_first_request():

    print('before_first_request')

@app.before_request

def before_request():

    print('before_request')

@app.after_request

def after_request(response):

    print('after_request')

    return response

@app.teardown_request

def teardown_request(e):

    print('teardown_request')

@app.route('/test')

def test():

    return 'test'

第一次請求控制臺輸出:

第二次請求控制臺輸出:

下面是請求鉤子的一些常見應(yīng)用場景:

  • before_first_request:第一個請求之前運行,可以進行一些 Web 程序的初始化操作
  • before_request:每次請求之前運行,可以進行數(shù)據(jù)庫連接的創(chuàng)建操作、用戶的權(quán)限校驗操作等
  • after_request:我們經(jīng)常在視圖函數(shù)中進行數(shù)據(jù)庫操作,比如更新、插入,之后需要將更改提交到數(shù)據(jù)庫中,提交更改的代碼就可以放到 after_request 鉤子注冊的函數(shù)中
  • teardown_request:可以接收視圖函數(shù)的異常,一般用來記錄錯誤日志

注意: 每個請求鉤子可以注冊任意多個處理函數(shù),函數(shù)名也并不是必須和鉤子名稱相同。如果有多個 before_request,執(zhí)行順序從上往下;after_request 接收一個響應(yīng)對象,并且返回同一個或者更新后的響應(yīng)對象,多個 after_request 執(zhí)行順序是從下往上。

到此這篇關(guān)于Flask? 請求鉤子的實現(xiàn)的文章就介紹到這了,更多相關(guān)Flask? 請求鉤子內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論