中介軟體是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 變數,其中每乙個元素就是乙個中介...