django中介軟體

2021-10-12 03:17:09 字數 2599 閱讀 1755

我們可以自定義的編寫屬於自己的中介軟體。也就是需要編寫乙個類,然後裡面定義4個方法

process_request(self, request), process_view(self, request, callback_args, callback_kwargs), process_exception(self, request, exception), process_response(self, request, response)

注意,這幾個方法名稱,包括函式的引數都要寫成這樣才行

然後在setting.py裡面新增我們的中介軟體。

配置檔案裡面新增中介軟體的規範是,第乙個是資料夾名稱,例如django就是乙個資料夾名稱。第二個是,資料夾下面的檔名。第三個就是檔案裡面的類名,這樣就是自定義了乙個自己的中介軟體。當新增到配置檔案之後,請求來了這個中介軟體就會被自動呼叫並執行,如果請求順利的話,中介軟體裡面這幾個方法的執行順序的。 process_request, process_view, (執行完這個之後就執行view裡面的函式)process_response

如果你的類檔案裡面,定義了兩個中介軟體,要想兩個中介軟體都使用也是setting裡面配置上兩個中介軟體。

然後當請求來了之後,中介軟體的執行流程的,先執行第乙個中介軟體裡面的process_request

再執行第二個中介軟體的process_request,然後執行第乙個中介軟體裡面的process_view.再執行第二個中介軟體裡面的process_view以此類推

中介軟體應用於request與服務端之間和服務端與response之間,客戶端發起請求到服務端接收可以通過中介軟體,服務端返回響應與客戶端接收響應可以通過中介軟體,也就是說中介軟體可以處理request和response。

在settings中django以及預設新增了許多有用的中介軟體

middleware = [

'django.middleware.security.securitymiddleware',

'django.contrib.sessions.middleware.sessionmiddleware',

'django.middleware.common.commonmiddleware',

'django.middleware.csrf.csrfviewmiddleware',

'django.contrib.auth.middleware.authenticationmiddleware',

'django.contrib.messages.middleware.messagemiddleware',

'django.middleware.clickjacking.xframeoptionsmiddleware',

]

上面的配置中的中介軟體是有順序的,從上到下依次通過,我們自定義的中介軟體如果使用的話也要按照正確的順序新增到這裡

中介軟體中有5個方法可以定義:

這裡要注意,在執行views函式之前的中介軟體的方法都是正常順序執行,views執行之後的中介軟體的方法是倒序執行

這裡借用 裡的

1、process_request : 請求進來時,許可權認證 。

2、process_view : 路由匹配之後,能夠得到檢視函式

3、process_exception : 異常時執行

4、process_template_responseprocess : 模板渲染時執行

5、process_response : 請求有響應時執行

Django 中介軟體

django中的中介軟體是乙個輕量級 底層的外掛程式系統,可以介入django的請求和響應處理過程,修改django的輸入或輸出。中介軟體的執行過程如下圖所示 django在中介軟體中預置了五個方法,這五個方法的區別在於不同的階段執行,對輸入或輸出進行干預,方法如下 def init self pa...

Django中介軟體

給檢視函式加裝飾器判斷使用者是否登入,把沒有登入的請求跳轉到登入頁面,我們通過給幾個特定檢視函式加裝飾器實現了這個需求,但是這樣做比較繁瑣,用django中的中介軟體會比較簡潔 什麼是中介軟體 中介軟體是幫助我們再檢視函式執行之前和執行之後都可以做一些額外的操作,它本質上就是乙個自定義類,類中定義了...

Django中介軟體

什麼是中介軟體?django中的中介軟體是乙個輕量級 底層的外掛程式系統,可以介入django的請求和響應處理過程,修改django的輸入或輸出。中介軟體的設計為開發者提供了一種無侵入式的開發方式,增強了django框架的健壯性。我們可以使用中介軟體,在django處理檢視的不同階段對輸入或輸出進行...