知識點
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...