目錄
一、為什麼要有過濾器?
二、常用過濾器
1.常用過濾器add
2.常用過濾器cut
3.常用過濾器date
4.常用過濾器default
5.常用過濾器first、last
6.常用過濾器floatformat
7.常用過濾器striptags
8.常用過濾器runcatechars
三、自定義模板過濾器
四、模板結構優化
dtl中不支援函式,過濾器相當於函式,可以接收引數,最多傳入兩個引數
過濾器使用格式:},value代表在views.py中定義的傳入模板的引數,filter代表各種過濾器
作用:用來在模板裡傳遞引數的函式,在python中用()放引數,但是模板裡不支援,add將傳進來的引數新增到原來的值上邊:
方式1.首先會將傳過來的引數和原來的值轉換成整形,如果轉換成功,則整形相加,返回結果
方式2.若轉換整形失敗,則進行字串拼接
使用方法:在html檔案中:
按照方式1在html中對兩個整數的處理:
}
在views.py中進行對模板的引用:
def add_view(request):
return render(request,'add.html')
在urls.py 中增加乙個對映:
按照方式2,將兩個列表拼接在一起,起到傳遞引數到模板的作用
作用:移除指定字元
使用方法:}
views.py中定義乙個新的函式,並且對映到url
當列表、字典為空時,或者為null時,在獲取其值的時候給乙個初始值
作用:可以獲取列表的第乙個、最後乙個值
用法:},},其中value為列表名
可以四捨五入保留小數,預設為一位小數
用法:去掉引數中的html標籤,如下,在view.py中有檢視函式,定義了乙個帶有標籤的值
def striptags_view(request):在html的body中,有},最後顯示去掉了標籤的內容,如果不加striptags過濾器,就會顯示出value裡的標籤context =
return render(request,'index.html',context=context)
作用:用來切割字串並且最後顯示...的,
需要知道,模板裡做多有兩個引數,"|"前邊的是被過濾的引數,"|"後邊的是過濾的條件
1.index.html渲染
2.檢視函式將被過濾的引數傳到模板
比如這個檢視函式將「張三」傳給了index.html
def myfilter_view(request):
context =
return render(request,'index.html',context=context)
3.使用過濾器,即呼叫自己寫的函式並傳遞引數給函式,將被過濾的資料傳給函式第乙個引數,過濾器右邊的值傳給函式第二個引數
比如以下index.html**,先要在開頭載入自己寫的過濾器,myfilter是放在templatetags下的自己編寫的過濾器的python檔名稱。在使用的時候,}中,value就要傳給myfilter.py裡自己編寫的過濾器函式greet的value引數,過濾器右邊的「你好!」就傳給了引數名為word的引數,然後執行函式的功能,即把兩個字串拼接在一起,最後顯示結果。
}
自己編寫過濾器的步驟
2.在資料夾中新建乙個python檔案,檔案名字即模板裡需要載入的名字
3. 匯入template包,對函式greet進行註冊:register = template.library()
4.寫乙個功能函式,即把兩個字串拼接在一起,此功能即過濾器的功能
5.註冊過濾器register.filter(「greet」,greet),左邊引數為過濾器的名稱,右邊引數是功能函式的名稱
或者直接在函式上邊加一行@register.filter,就會自動把底下的函式當做過濾器註冊,過濾器名即為函式名
from django import template
register = template.library()
def greet(value,word):
return value + word
register.filter("greet",greet)
最後結果:
引入模板
繼承模板
32 Django模板 DTL常用過濾器(1)
為什麼需要過濾器 因為在dtl中,不支援函式的呼叫形式 因此不能給函式傳遞引數,這將有很大的侷限性。而過濾器其實就是乙個函式,可以對需要處理的引數進行處理,並且還可以額外置收乙個引數 也就是說,最多只能由2個引數 add過濾器 將傳進來的引數新增到原來的值上面。這個過濾器會嘗試將值和引數轉換成整形然...
036 DTL常用過濾器(5)
slice過濾器 類似於 python 中的切片操作。示例 如下 以上 將會給 some list 從 2 開始做切片操作。stringtags過濾器 刪除字串中所有的 html 標籤。示例 如下 如果 value 是hello world,那麼以上 將會輸出 hello world truncat...
035 DTL常用過濾器(4)
join過濾器 類似與 python 中的 join 將列表 元組 字串用指定的字元進行拼接。示例 如下 如果 value 是等於 a b c 那麼以上 將輸出 a b c length過濾器 獲取乙個列表 元組 字串 字典的長度。示例 如下 如果 value 是等於 a b c 那麼以上 將輸出 ...