day062 中介軟體

2022-09-18 05:18:18 字數 2502 閱讀 4635

中介軟體:

作用: 介於request和response之間的一到處理過程,相對比較輕量級,並且在全域性上改變django的輸入與輸出,因為改變的是全域性,所以需要謹慎使用,用不好會影響到效能.

當使用者傳送請求的時候會依次經過所有的中介軟體,這是紅請求時process_request,最後到達views函式中,views函式處理後,會依次穿過中介軟體,這個時候是process_response,最後返回給請求者.

中介軟體的位置在settings配置,middleware中, 按照從上往下的順序執行:

自定義中介軟體:

上圖的中介軟體是django自帶的中介軟體,我們也可以自定義中介軟體,即寫乙個類,但是這個類必須繼承middlewaremixin.

此時還要在settings中的middleware中,最下面加上你自定義的中介軟體:

''middlewares.md1'' ,  

''middlewares.md2'' , 這裡的md1和md2是你寫的類名

自定義中介軟體例項

目錄: 在專案中建立乙個包(資料夾),隨便起名字,一般我們都起名叫utils包裡面,表示乙個公共元件,建立乙個py檔案,隨便起名,例如我們起名叫middlewares.py .

from django.utils.deprecation import middlewaremixin

class mdware(middlewaremixin):

#自定義中介軟體,不是必須要有下面這兩個方法,有request方法說明請求來了要處理,有response方法說明響應出去需要處理,不是非要寫這兩個方法,如果沒寫process_response,那麼會一層一層

的往上找,那個中介軟體有process_response方法就返回物件給哪個中介軟體

def process_request(self,request):

print('md1中的 process_request')

def process_response(self,request,response):

print('md2中的 process_response')

return response

#此時必須要return response, 這裡模擬於跑接力的接力棒

process_requestprocess_request有乙個引數,就是request,這個request和檢視函式中的request是一樣的,如果沒有返回值,就按照正常流程走,如果返回了乙個httpresponse,django將不會執行檢視函式,而將對應的httpresponse物件返回給瀏覽器.

from django.utils.deprecation import middlewaremixin

class md1(middlewaremixin):

def process_request(self,request):

print(" md1中的process_request")

class md2(middlewaremixin):

def process_request(self,request):

print("md2中的process_request ")

process_responseprocess_response有兩個引數,乙個是request,另乙個是response , request和之前是一樣的,response是檢視函式返回的httpresponse物件,該方法的返回值也必須是httpresponse物件.

from django.utils.deprecation import middlewaremixin

class md1(middlewaremixin):

def process_request(self,request):

print('md1中的process_request')

def process_response(self,request,response): #request和response兩個引數必須有

print('md1中的process_response')

print('md2中的process_request')

def process_response(self,request,response):

print('md1中的process_response')

return response #必須返回response,不然上層中介軟體沒有拿到httpresponse物件,會報錯

13 2 7 中介軟體

中介軟體顧名思義,是介於request與response處理之間的一道處理過程,相對比較輕量級,並且在全域性上改變django的輸入與輸出。因為改變的是全域性,所以需要謹慎實用,用不好會影響到效能。如果你想修改請求,例如被傳送到view中的httprequest物件。或者你想修改view返回的htt...

21 中介軟體

一 中介軟體的定義 1.中介軟體是django請求 響應處理的鉤子框架,它是乙個輕量級的 低階的 外掛程式 系統,用於全域性改變django的輸入或輸出 2.中介軟體以類的形式體現 3.每個中介軟體元件負責做一些特定的功能,例如django包含乙個中介軟體元件 authenticationmiddl...

07 中介軟體

5 獲取的資料會交給最後乙個中介軟體的process response方法處理,然後依次向前面的中介軟體process response 6 在任一中介軟體的process request和process view方法中有返回值就會直接返回給process response 3 檢視函式 4 中介軟...