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

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

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

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

Flask 常用請求鉤子如下:

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

這些請求鉤子是使用裝飾器方式實(shí)現(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:第一個(gè)請求之前運(yùn)行,可以進(jìn)行一些 Web 程序的初始化操作
  • before_request:每次請求之前運(yùn)行,可以進(jìn)行數(shù)據(jù)庫連接的創(chuàng)建操作、用戶的權(quán)限校驗(yàn)操作等
  • after_request:我們經(jīng)常在視圖函數(shù)中進(jìn)行數(shù)據(jù)庫操作,比如更新、插入,之后需要將更改提交到數(shù)據(jù)庫中,提交更改的代碼就可以放到 after_request 鉤子注冊的函數(shù)中
  • teardown_request:可以接收視圖函數(shù)的異常,一般用來記錄錯(cuò)誤日志

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

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

相關(guān)文章

最新評論