django學習筆記 如何自定義中介軟體詳解

2021-08-17 14:27:16 字數 2896 閱讀 4687

知識點

django 中的中介軟體(middleware),在django中,中介軟體其實就是乙個類,在請求到來和結束後,django會根據自己的規則在合適的時機執行中介軟體中相應的方法。

在django專案的settings模組中,有乙個 middleware_classes 變數,其中每乙個元素就是乙個中介軟體。如下圖,我們要想自定義中介軟體只要在裡面新增即可,比如我在middle目錄下建立了middlefile模組,裡面有3個類row1-3。

中介軟體中可以定義四個方法,分別是:

應用示例

# 該結果流程圖整個分析結果見圖2,如果views.middle函式沒有異常,那麼頁面則返回 middle

class row1(middlewaremixin):

def process_request(self,request):

print("row[1]_request")

def process_view(self,request,callback,callback_args,callback_kwargs):

print('row[1]_view')

def process_response(self,request,response):

print('row[1]_response')

return response

class row2(middlewaremixin):

def process_request(self, request):

print("row[2]_request")

# return httpresponse('over') # 如果這裡寫httpresponse,那麼流程結果就見圖3,此時不會訪問row3的值了

return response # 需要response才能把views.middle函式的返回值返回

def process_exception(self,request,exception): # 這個views模組的函式中有異常會觸發,尋找順序從row(3-1) 見圖2

url('middle/(?p\d+)',views.middle),
流程示意圖

圖2

圖3

還有乙個基本用不到

在middlefile.py中寫上

def process_template_response(self,request,response):

# 如果views中的函式返回的物件中,具有render方法

print('-----------------------')

return response

在views中寫上

Django 自定義標籤

模版是乙個用django模版語言標記過的python字串。模版可以包含模版標籤和變數。模版標籤是在乙個模版裡起作用的標記。比如,乙個模版標籤可以產生控制結構的內容 if或者for 可以獲取資料庫內容或者訪問其它模版標籤。乙個標籤塊被包圍 變數標籤被 包圍 context是乙個傳遞給模版的key va...

Django自定義函式

templates 母版.html 引入 extends include 自定義函式 simpla tag 2.任意python檔案 a.from django import template from django.utils.safestring import mark safe registe...

django自定義Color Picker控制項

django提供了豐富的部件,以滿足我們對各種html控制項的需求。並且如果有特別的要求,我們還可以很容易的編寫自己的控制項,本文主要內容是自定義乙個顏色選擇器的控制項,該控制項是在input的基礎上,實現顏色的選擇和展示。如果你不知道如何實現自定義django的form控制項的話,可以檢視djan...