1.什麼是django中介軟體
2.django中介軟體的執行邏輯
3.實現自定義中介軟體
1.什麼是django中介軟體
django中介軟體是乙個類;
請求前後在合適的時機執行相應的方法;
可以通過在settings檔案中配置middleware_classes屬性來設定使用何種中介軟體。
middleware =
[# 安全中介軟體,處理請求應答安全的處理
'django.middleware.security.securitymiddleware'
,# 提供由狀態服務session中介軟體
'django.contrib.sessions.middleware.sessionmiddleware'
,'django.middleware.common.commonmiddleware'
,# 防止跨站偽造請求的中介軟體
# 'django.middleware.csrf.csrfviewmiddleware',
# django自帶的認證體系中介軟體
'django.contrib.auth.middleware.authenticationmiddleware'
,# 訊息中介軟體
'django.contrib.messages.middleware.messagemiddleware'
,'django.middleware.clickjacking.xframeoptionsmiddleware'
,]
gzip壓縮中介軟體,處理網頁請求/應答中檔案壓縮:gzipmiddleware
2.django中介軟體執行邏輯
如下圖,每個請求都會兩次經過配置的中介軟體,多個中介軟體之間存在執行順序。
3.實現自定義中介軟體
settings.py
# 專案啟動後自動例項化所有中介軟體
middleware =[.
..'ops.middlewaredemo.testmiddleware'
,'ops.middlewaredemo.test2middleware',...]
ops/middlewaredemo.py
class
testmiddleware
:def
__init__
(self, get_response)
: self.get_response = get_response
print
('build testmiddleware'
)def
__call__
(self, request)
:print
('testmiddleware before request.'
) response = self.get_reponse(request)
print
('testmiddleware after request.'
)return response
class
test2middleware
:def
__init__
(self, get_response)
: self.get_response = get_response
print
('build testmiddleware'
)def
__call__
(self, request)
:print
('test2 before request.'
) response = self.get_reponse(request)
print
('test2 after request.'
)return response
apis/views/test.py
def
helloworld
(request)
: data =
dict()
data[
'query'
]= request.get.get(
'info'
)# return jsonresponse(data=data, safe=
false
, status=
200)
#
配置路由後,啟動專案訪問web helloworld
從console輸出可知,順序執行,並且兩次進過middlewa
Django Middleware的幾個關鍵方法
django 處理乙個 request 的過程是首先通過中介軟體,然後再通過預設的 url 方式進行的。我們可以在 middleware 這個地方把所有request 攔截住,用我們自己的方式完成處理以後直接返回 response。因此了解中介軟體的構成是非常必要的。initializer init...
xpath 省略中間路徑 中間路徑方法
xpath 省略中間路徑 在我的職業生涯的大部分時間裡,我一直在從事軟體開發工作,因此,即使我不止一次涉足解決方案工程,我還是把自己視為軟體開發人員 或軟體架構師 這肯定會對我如何看待架構景觀產生影響,但是我會盡量保持客觀。從歷史上看,提供滿足業務需求的軟體解決方案有兩種方法 我的軟體開發人員方面以...
python屬於中介軟體嗎 python中介軟體
django的中介軟體是全域性範圍內處理django的請求和響應的框架級別的鉤子。定義from django.utils.deprecation importmiddlewaremixinclassmd1 middlewaremixin defprocess request self,request...