中介軟體:
作用: 介於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 middlewaremixinprocess_requestprocess_request有乙個引數,就是request,這個request和檢視函式中的request是一樣的,如果沒有返回值,就按照正常流程走,如果返回了乙個httpresponse,django將不會執行檢視函式,而將對應的httpresponse物件返回給瀏覽器.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, 這裡模擬於跑接力的接力棒
from django.utils.deprecation import middlewaremixinprocess_responseprocess_response有兩個引數,乙個是request,另乙個是response , request和之前是一樣的,response是檢視函式返回的httpresponse物件,該方法的返回值也必須是httpresponse物件.class md1(middlewaremixin):
def process_request(self,request):
print(" md1中的process_request")
class md2(middlewaremixin):
def process_request(self,request):
print("md2中的process_request ")
from django.utils.deprecation import middlewaremixinclass 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 中介軟...