詳細介紹看:
1:建立乙個.py檔案。如:my_middle.py
2:在建立的py檔案裡面寫自定義的中介軟體。如:m1,m2
3::在setting.py裡的middleware裡加上自定的中介軟體。如:『my_middle.m1』,『my_middle.m2』,
建立m1,m2兩個中介軟體。
在settings裡註冊順序:
'my_middle.m1',
'my_middle.m2',
1執行結果:from django.utils.deprecation import
middlewaremixin23
class
m1(middlewaremixin):
4def
process_request(self,request):
5print('
m1的process_request')
6def
process_response(self,request,response):
7print('
m1的process_response')
8return
response
9def
process_view(self,request,callback,callback_arg,callback_kwargs):
10print
(callback)
11print('
m1的process_view')
12class
m2(middlewaremixin):
13def
process_request(self,request):
14print('
m2的process_request')
15def
process_response(self,request,response):
16print('
m2的process_response')
17return
response
18def
process_view(self,request,callback,callback_arg,callback_kwargs):
19print
(callback)
20print('
m2的process_view
')
m1的process_request
m2的process_request
m1的process_view
m2的process_view
檢視函式
m2的process_response
m1的process_response
其過程如圖所示:
process_request的返回值有兩個:none和httpresponse。如果返回值是none則按原來的順序進行執行,入如果是httpresponse則不會執行後面的中介軟體中的process_request,和process_view。直接從該中介軟體的process_response執行。並將返回值返回給使用者。
process_response只能返回httpresponse物件,這裡返回的是response。
process_view有4個引數
request:請求相關的內容。
callback:是django即將使用的檢視函式。 (它是實際的函式物件,而不是函式的名稱作為字串。)
callback
_args是將傳遞給檢視的位置引數的列表.
callback
_kwargs是將傳遞給檢視的關鍵字引數的字典。 callback
_args和callback
_kwargs都不包含第乙個檢視引數(request)。
ps:後面三個引數callback這個名字是可以改變的。
process_view有2個返回值none和httpresponse。當返回值是none時,按原來的順序執行不做改變。入如果是httpresponse,則不會執行後面的中介軟體的process_view,直接執行process_response(不是從當前中介軟體的process_response執行,是從第乙個執行)。
process_exception(self,request,exception):是在執行試圖函式之後process_response之前執行。在檢視函式沒有異常時不執行。檢視函式有異常時才執行。執行的順序是按照註冊的順序的倒序執行。有2個返回值none和httpresponse。當返回值是none時,按原來的順序執行不做改變。入如果是httpresponse,如:
return httpresponse(str(exception)),不會執行下面的process_exception,直接執行process_response。並將返回值返回給瀏覽器。
Django 中介軟體
django中的中介軟體是乙個輕量級 底層的外掛程式系統,可以介入django的請求和響應處理過程,修改django的輸入或輸出。中介軟體的執行過程如下圖所示 django在中介軟體中預置了五個方法,這五個方法的區別在於不同的階段執行,對輸入或輸出進行干預,方法如下 def init self pa...
Django中介軟體
給檢視函式加裝飾器判斷使用者是否登入,把沒有登入的請求跳轉到登入頁面,我們通過給幾個特定檢視函式加裝飾器實現了這個需求,但是這樣做比較繁瑣,用django中的中介軟體會比較簡潔 什麼是中介軟體 中介軟體是幫助我們再檢視函式執行之前和執行之後都可以做一些額外的操作,它本質上就是乙個自定義類,類中定義了...
Django中介軟體
什麼是中介軟體?django中的中介軟體是乙個輕量級 底層的外掛程式系統,可以介入django的請求和響應處理過程,修改django的輸入或輸出。中介軟體的設計為開發者提供了一種無侵入式的開發方式,增強了django框架的健壯性。我們可以使用中介軟體,在django處理檢視的不同階段對輸入或輸出進行...