1. 程式人生 > 程式設計 >Flask框架請求鉤子與request請求物件用法例項分析

Flask框架請求鉤子與request請求物件用法例項分析

本文例項講述了Flask框架請求鉤子與request請求物件。分享給大家供大家參考,具體如下:

請求鉤子

在客戶端和伺服器互動的過程中,有些準備工作或掃尾工作需要處理,比如:

  • 在請求開始時,建立資料庫連線
  • 在請求開始時,根據需求進行許可權校驗
  • 在請求結束時,指定資料的互動格式

為了讓每個檢視函式避免編寫重複功能的程式碼,Flask提供了通用設施的功能,即請求鉤子。

請求鉤子是通過裝飾器的形式實現,Flask支援如下四種請求鉤子:

請求鉤子 描述
before_first_request 在處理第一個請求前執行
before_request 在處理每一個請求前執行
after_request 如果沒有丟擲錯誤,則在每一次請求後執行(接受一個引數:檢視函式做出的響應)
teardown_request 在每次請求後執行(接受一個引數:用來接受錯誤資訊)

例:

from flask import Flask
app = Flask(__name__)
# 在第一次請求之前呼叫,可以在此方法內部做一些初始化操作
@app.before_first_request
def before_first_request():
  print("before_first_request")
# 在每次請求之前呼叫,這時候已經有請求了,可能在這個方法裡面做請求的校驗
# 如果請求的校驗不成功,可以直接在此方法中進行響應,直接return之後那麼就不會執行檢視函式
@app.before_request
def before_request():
  print("before_request")
  # if 請求不符合條件:
  #   return "laowang"
# 在執行完檢視函式之後會呼叫,並且會把檢視函式所生成的響應傳入,可以在此方法中對響應做最後一步統一的處理
@app.after_request
def after_request(response):
  print("after_request")
  response.headers["Content-Type"] = "application/json"
  return response
# 請每一次請求之後都會呼叫,會接受一個引數,引數是伺服器出現的錯誤資訊
@app.teardown_request
def teardown_request(e):
  print("teardown_request")
@app.route('/')
def index():
  return 'index'
if __name__ == '__main__':
  app.run(debug=True)

第一次訪問列印結果:

第二次訪問列印結果:

request物件

屬性 說明 型別
data 記錄請求的資料,並轉換為字串 *
form 記錄請求中的表單資料 MultiDict
args 記錄請求中的查詢引數 MultiDict
cookies 記錄請求中的cookie資訊 Dict
headers 記錄請求中的報文頭 EnvironHeaders
method 記錄請求使用的HTTP方法 GET/POST…
url 記錄請求的URL地址 string
files 記錄請求上傳的檔案 *

獲取request物件:

例:

request.url # 請求的url地址
request.args.get("password")) # 獲取不到,返回none,request.args.get("password","aaa")) # 獲取不到,返回aaa

希望本文所述對大家基於Flask框架的Python程式設計有所幫助。