Django高階 中介軟體 初識

2021-09-14 06:15:00 字數 2033 閱讀 5703

中介軟體是dajngo框架對request/response響應的輕量級外掛程式系統。作用於使用者和檢視函式之間。

-project                  #專案名

-project

-middleware.py # 起名隨意

def

******_middleware

(get_response)

:#可以編寫函式中介軟體

# 僅在專案啟動時執行一次

print

('函式中介軟體專案啟動執行'

)def

middleware

(request)

:# 對於每個request請求,呼叫檢視函式之前執行

print

('函式中介軟體檢視函式被呼叫前執行'

) response = get_response(request)

#呼叫檢視函式

# 對於每個request請求,呼叫檢視函式之後執行

print

('函式中介軟體檢視函式被呼叫後執行'

)return response

return middleware

class

******middleware

:#也可以編寫類中介軟體

def__init__

(self, get_response)

: self.get_response = get_response

# 僅在專案啟動時執行一次

print

('類中介軟體專案啟動執行'

)def

__call__

(self, request)

:# 對於每個request請求,呼叫檢視函式之前執行

print

('類中介軟體檢視函式被呼叫前執行'

) response = self.get_response(request)

# 對於每個request請求,呼叫檢視函式之後執行

print

('類中介軟體檢視函式被呼叫後執行'

)return response

settings.py中註冊

middleware =

['book.middleware.******middleware'

,'book.middleware.******_middleware'

,]

注意:此處我們先註冊了類中介軟體

啟動專案,傳送請求

函式中介軟體專案啟動執行

類中介軟體專案啟動執行

#傳送一次請求後

類中介軟體檢視函式被呼叫前執行

函式中介軟體檢視函式被呼叫前執行

#執行一次請求後

檢視函式被呼叫

函式中介軟體檢視函式被呼叫後執行

類中介軟體檢視函式被呼叫後執行[01

基於註冊先後順序(若函式中介軟體先註冊,呼叫順序相反)

啟動時的呼叫順序:棧式結構,先註冊者後呼叫

請求時的呼叫順序:洋蔥模型、先註冊者先呼叫、訪問到洋蔥核心(檢視函式)再原路返回。

對於第2條詳解,將每乙個註冊的中介軟體想象為洋蔥的一層,先註冊的在外層。請求到來時,從最外層,層層深入直到檢視函式;然後再原路返回,直到最外層。

心藍沒有墨染帥氣,不過比墨染有菜花?

初識Django中介軟體

之前曾使用裝飾器實現登陸校驗,但是實際開發中有時是需要所有頁面都執行校驗等功能。例如 不同的使用者訪問同乙個頁面,根據許可權不同返回的資料也應該不同。當然可以通過資料庫查詢限制返回的結果,但這樣並不能完全對資訊進行限制。中介軟體放在乙個列表中執行,有先後順序,放在前面的先執行,放在後面的後執行。中介...

Django高階之中介軟體

django 中的中介軟體 middleware 在django中,中介軟體其實就是乙個類,在請求到來和結束後,django會根據自己的規則在合適的時機執行中介軟體中相應的方法。在django專案的settings模組中,有乙個 middleware classes 變數,其中每乙個元素就是乙個中介...

Django高階之中介軟體

django 中的中介軟體 middleware 在django中,中介軟體其實就是乙個類,在請求到來和結束後,django會根據自己的規則在合適的時機執行中介軟體中相應的方法。在django專案的settings模組中,有乙個 middleware classes 變數,其中每乙個元素就是乙個中介...