日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

flask框架中勾子函数的使用

發(fā)布時(shí)間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flask框架中勾子函数的使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在客戶(hù)端和服務(wù)器交互的過(guò)程中,有些準(zhǔn)備工作或掃尾工作需要處理,比如:

    在請(qǐng)求開(kāi)始時(shí),建立數(shù)據(jù)庫(kù)連接;

    在請(qǐng)求開(kāi)始時(shí),根據(jù)需求進(jìn)行權(quán)限校驗(yàn);

    在請(qǐng)求結(jié)束時(shí),指定數(shù)據(jù)的交互格式;

為了讓每個(gè)視圖函數(shù)避免編寫(xiě)重復(fù)功能的代碼,Flask提供了通用設(shè)施的功能,即請(qǐng)求鉤子。

請(qǐng)求鉤子是通過(guò)裝飾器的形式實(shí)現(xiàn),Flask支持如下四種請(qǐng)求鉤子:

  • before_first_request
    • 在處理第一個(gè)請(qǐng)求前執(zhí)行
  • before_request
    • 在每次請(qǐng)求前執(zhí)行
    • 如果在某修飾的函數(shù)中返回了一個(gè)響應(yīng),視圖函數(shù)將不再被調(diào)用
  • after_request
    • 如果沒(méi)有拋出錯(cuò)誤,在每次請(qǐng)求后執(zhí)行
    • 接受一個(gè)參數(shù):視圖函數(shù)作出的響應(yīng)
    • 在此函數(shù)中可以對(duì)響應(yīng)值在返回之前做最后一步修改處理
    • 需要將參數(shù)中的響應(yīng)在此參數(shù)中進(jìn)行返回
  • teardown_request
    • 在每次請(qǐng)求后執(zhí)行
    • 接受一個(gè)參數(shù):錯(cuò)誤信息,如果有相關(guān)錯(cuò)誤拋出

代碼測(cè)試

from flask import Flask from flask import abort app = Flask(__name__) # 在第一次請(qǐng)求之前調(diào)用,可以在此方法內(nèi)部做一些初始化操作 @app.before_first_request def before_first_request(): print("before_first_request") # 在每一次請(qǐng)求之前調(diào)用,這時(shí)候已經(jīng)有請(qǐng)求了,可能在這個(gè)方法里面做請(qǐng)求的校驗(yàn) # 如果請(qǐng)求的校驗(yàn)不成功,可以直接在此方法中進(jìn)行響應(yīng),直接return之后那么就不會(huì)執(zhí)行視圖函數(shù) @app.before_request def before_request(): print("before_request") # if 請(qǐng)求不符合條件: # return "laowang" # 在執(zhí)行完視圖函數(shù)之后會(huì)調(diào)用,并且會(huì)把視圖函數(shù)所生成的響應(yīng)傳入,可以在此方法中對(duì)響應(yīng)做最后一步統(tǒng)一的處理 @app.after_request def after_request(response): print("after_request") response.headers["Content-Type"] = "application/json" return response # 請(qǐng)每一次請(qǐng)求之后都會(huì)調(diào)用,會(huì)接受一個(gè)參數(shù),參數(shù)是服務(wù)器出現(xiàn)的錯(cuò)誤信息 @app.teardown_request def teardown_request(e): print("teardown_request") @app.route('/') def index(): return 'index' if __name__ == '__main__': app.run(debug=True)
  • 在第1次請(qǐng)求時(shí)的打印:
before_first_request before_request after_request teardown_request
  • 在第2次請(qǐng)求時(shí)的打印:
before_request after_request teardown_request

轉(zhuǎn)載于:https://www.cnblogs.com/skaarl/p/9397299.html

總結(jié)

以上是生活随笔為你收集整理的flask框架中勾子函数的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。