目錄中介軟體顧名思義,是介於request與response處理之間的一道處理過程,相對比較輕量級,並且在全域性上改變django的輸入與輸出。因為改變的是全域性,所以需要謹慎實用,用不好會影響到效能。
如果你想修改請求,例如被傳送到view中的httprequest物件。 或者你想修改view返回的httpresponse物件,這些都可以通過中介軟體來實現。
可能你還想在view執行之前做一些操作,這種情況就可以用 middleware來實現。
中介軟體中一共有四個方法:
當使用者發起請求的時候會依次經過所有的的中介軟體,這個時候的請求時process_request,最後到達views的函式中,views函式處理後,在依次穿過中介軟體,這個時候是process_response,最後返回給請求者。
上述截圖中的中介軟體都是django中的,我們也可以自己定義乙個中介軟體,我們可以自己寫乙個類,但是必須繼承middlewaremixin
需要匯入
print("view函式...")
print('md1請求')
def process_response(self,request,response):
print('md1響應')
return response
class md2(middlewaremixin):
def process_request(self, request):
print('md2請求')
# return httpresponse("md2中斷")
def process_response(self, request,response):
print('md2響應')
return response
結果
md1請求
md2請求
view函式...
md2返回
md1返回
注意:如果當請求到達請求2的時候直接不符合條件返回,即return httpresponse("md2中斷"),程式將把請求直接發給中介軟體2返回,然後依次返回到請求者,結果如下:
返回md2中斷的頁面,後台列印如下:
md1請求
md2請求
md2返回
md1返回
流程圖如下:![](https://pic.w3help.cc/ab5/a425cc4160116ceba9ef3b3ed920f.jpeg)
Django 中介軟體
django中的中介軟體是乙個輕量級 底層的外掛程式系統,可以介入django的請求和響應處理過程,修改django的輸入或輸出。中介軟體的執行過程如下圖所示 django在中介軟體中預置了五個方法,這五個方法的區別在於不同的階段執行,對輸入或輸出進行干預,方法如下 def init self pa...
Django中介軟體
給檢視函式加裝飾器判斷使用者是否登入,把沒有登入的請求跳轉到登入頁面,我們通過給幾個特定檢視函式加裝飾器實現了這個需求,但是這樣做比較繁瑣,用django中的中介軟體會比較簡潔 什麼是中介軟體 中介軟體是幫助我們再檢視函式執行之前和執行之後都可以做一些額外的操作,它本質上就是乙個自定義類,類中定義了...
Django中介軟體
什麼是中介軟體?django中的中介軟體是乙個輕量級 底層的外掛程式系統,可以介入django的請求和響應處理過程,修改django的輸入或輸出。中介軟體的設計為開發者提供了一種無侵入式的開發方式,增強了django框架的健壯性。我們可以使用中介軟體,在django處理檢視的不同階段對輸入或輸出進行...