Django 中介軟體

2022-07-23 17:45:15 字數 2540 閱讀 1654

詳細介紹看:

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處理檢視的不同階段對輸入或輸出進行...