Flask框架從入門到精通之請求鉤子(二十二)

知識點: 一、請求鉤子python

1、概況

Flask的請求鉤子指的是在執行視圖函數先後執行的一些函數,咱們能夠在這些函數裏面作一些操做。Flask利用裝飾器給咱們提供了四種鉤子函數。數據庫

  • before_first_request:在處理第一個請求前執行。好比連接數據庫操做
  • before_request:在每次請求前執行。好比權限校驗
  • after_request:每次請求以後調用,前提是沒有未處理的異常拋出
  • teardown_request:每次請求以後調用,即便有未處理的異常拋出

Flask裏面的鉤子跟Django裏面的中間件相似。json

2、使用

from flask import Flask

app = Flask(__name__)


@app.route('/')
def index():
    print('視圖函數執行')
    return 'index page'


# 在第一次請求以前運行.
@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):
    # response: 就是前面的請求處理完畢以後, 返回的響應數據,前提是視圖函數沒有出現異常
    # 若是須要對響應作額外處理,能夠再這裏進行
    # json.dumps 配置請求鉤子
    # response.headers["Content-Type"] = "application/json"
    print('after_request')
    return response


# 不管視圖函數是否出現異常,每一次請求以後都會調用,會接受一個參數,參數是服務器出現的錯誤信息
@app.teardown_request
def teardown_request(error):
    print('teardown_request: error %s' % error)


if __name__ == '__main__':
    app.run(debug=True)
複製代碼

咱們在瀏覽器第一次訪問:flask

before_first_request
before_request
視圖函數執行
after_request
teardown_request: error None
複製代碼

咱們在刷新瀏覽器試一下:瀏覽器

before_request
視圖函數執行
after_request
teardown_request: error None

複製代碼

歡迎關注個人公衆號:服務器

image
相關文章
相關標籤/搜索