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

〆 小源。發表於2019-05-04

知識點: 1、請求鉤子

一、概況

Flask的請求鉤子指的是在執行檢視函式前後執行的一些函式,我們可以在這些函式裡面做一些操作。Flask利用裝飾器給我們提供了四種鉤子函式。

  • before_first_request:在處理第一個請求前執行。比如連結資料庫操作
  • before_request:在每次請求前執行。比如許可權校驗
  • after_request:每次請求之後呼叫,前提是沒有未處理的異常丟擲
  • teardown_request:每次請求之後呼叫,即使有未處理的異常丟擲

Flask裡面的鉤子跟Django裡面的中介軟體類似。

二、使用

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)
複製程式碼

我們在瀏覽器第一次訪問:

before_first_request
before_request
檢視函式執行
after_request
teardown_request: error None
複製程式碼

我們在重新整理瀏覽器試一下:

before_request
檢視函式執行
after_request
teardown_request: error None

複製程式碼

歡迎關注我的公眾號:

image

相關文章