django中介軟體學習

2021-09-12 19:30:59 字數 1814 閱讀 4886

wsgi介面之後、urls.py之前,在全域性操作django請求和響應的模組。

(1)django中setting.py檔案有預設的7個中介軟體。從原始碼看從,中介軟體的構造首先要定義乙個繼承middlewaremixin的類,可以在類中實現以下5個方法。主要實現process_request和process_response兩個方法

1)process_request(self,request)

2)process_response(self,request,response)

3)process_view(self,request,view_func,view_args,view_kwargs)

4)process_template_response(self,request,response)

5)process_exception(self, request, exception)

(2)自定義中介軟體示例

from django.utils.deprecation import middlewaremixin

class firstmiddleware(middlewaremixin):

def process_request(self,request):

print("firstmiddle_request")

def process_response(self,request,response):

print("firstmiddle_response")

return response

(3)process_request(self,request)

1)有乙個request引數,按照註冊順序的正序執行,在wsgi後執行。

2)當返回none,繼續執行下乙個中介軟體,當返回response,直接逃過後面所有的程式,將response返回給瀏覽器。

(4)process_response(self,request,response)

1)有request,response兩個引數,按照註冊順序的倒序執行,在url.py前執行。

2)必須有乙個response返回值。

(5)process_view(self,request,view_func,view_args,view_kwargs)

1)有request,view_func,view_args,view_kwargs四個引數,按照註冊順序的正序執行,在url.py之後執行

2)當返回none,繼續執行下乙個中介軟體,當返回response,直接逃過後面所有的程式,將response返回給瀏覽器。

(6)process_template_response(self,request,response)

1)有response.response兩個引數,按照註冊順序的倒序執行,在template中頁面執行完之後執行。

2)當返回none,繼續執行下乙個中介軟體,當返回response,直接逃過後面所有的程式,將response返回給瀏覽器。

(7)process_exception(self, request, exception)

1)有request,exception兩個引數,按照註冊順序的倒序執行,檢視函式出現異常的時候才執行。

2)當返回none,繼續執行下乙個中介軟體,當返回response,直接逃過後面所有的程式,將response返回給瀏覽器。

process_request

url.py

process_view

view.py

有異常執行process_exception

process_template_response

process_response

Django 中介軟體

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

Django中介軟體

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

Django中介軟體

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