Django過濾器
add過濾器:將字符串和字母、整數鏈接(若為字符串會轉化為整數形式)
注:若是一個字母字符串和一個數字進行鏈接會輸出空
{{ 1|add:2 }}返回一個3
{{ "2"|add:3 }}返回一個5
{{ "a"|add:3 }}#返回一個空
cut過濾器 移除指定的字符串注:后面的參數必須是字符串的形式
{{ "hello world"|cut:" " }}#移除了hello world 里的所有空格 結果為 helloworld
{{ "hello world"|cut:"e" }}#結果為hllo world 移除了e
{{ 123456|cut:1 }}#會報錯 是因為參數不是字符串的形式 不管前面所要移除的對象是否為整數 參數必須是字符串的形式
data過濾器--過濾時間的過濾器(要用到datetime模塊)
{{ time|date:"Y-m-g" }}#后面的參數必須要加引號 會顯示出時間年月時分
first過濾器和last過濾器--輸出列表/元組/字符串中的第一個 /最后一個值(不能傳參數)
且元祖列表都要提前定義(只輸入變量名)
#name:["ll","ww","ee"]
{{ name|first }}#輸出li
{{ name|last }}#輸出ee
{{ "15784"|first }}#字符串 輸出1
floatformat過濾器--將浮點數保留小數 不傳如參數就是默認保留一位(只看小數點后兩位)
且正數和負數方式一樣
{{ 1.41|floatformat }}#輸出1.4
{{ 1.545|floatformat }}#輸出1.5(只看小數點后兩位等同於1.54)
{{ -1.05|floatformat }}#輸出-1.1
{{ 1.247|floatformat:2 }}#輸出1.25
join過濾器 在中間加一些特殊符號 類似於python的join(可以在列表,元祖操作)
{{ "hello"|join:"*" }}#輸出h*e*l*l*o
{{ name|join:"-" }}
length過濾器 獲取字符串、元祖、列表的長度(沒有參數)
{{ "1515"|length }}#輸出4
upper/lower過濾器 將字母改成大/小寫(沒有參數)
{{ "woaini"|upper }}#輸出WOAINI
{{ "DEFRT"|lower }}#輸出defrt
random過濾器 隨機抽取列表、元祖、字符串中的隨機一個數,類似於python中的random模塊
{{ name|random }}#隨機在這個里面輸出一個值
safe過濾器 關閉字符串自動轉義 就是傳入的值里面沒有任何特殊字符就會原樣輸出 若有就會轉義輸出(列入<br>),且python中的特殊字符無法識別
#"style": "abcdef<br>adasds"
{{ style|safe }}#會輸出abcdef
adasds
#"style": "woaini"
{{ style|safe }}#會輸出woaini(原樣輸出)
slice過濾器 類似於python的slice 切片(對字符串、元祖、列表操作)
{{ "woaini"|slice:"2" }}#輸出wo(默認是從第0位開始到第2位結束,且不包含第二位)
{{ "woshini"|slice:"2:5" }}#輸出shi
striptags過濾器 刪除字符串中的html標簽(前面的參數){{ value|striptags }} 中的value中的html標簽(沒有參數)
{{ style|striptags }}#輸出一個不帶有html標簽的(style里有h1標簽就會刪除原樣輸出)
truncatechars過濾器 如果給定的字符串長度超過了過濾器指定的長度。那么就會進行切割,並且會拼接三個點來作為省略號
{{ "woaini"|truncatechars:5 }}#輸出wo...本應輸出woain但要用三個省略號作為末尾,所以就要輸出wo...
{{ "woaini"|truncatechars:6 }}#輸出woaini 字符串長度和過濾器指定長度相同 原樣輸出
注意:若value中帶有html標簽 不會自動轉義 會自主輸出
#"style": "<h1>abcdefadasds</h1>"
{{ style|truncatechars:6 }}#輸出<h1..
truncatechars_html過濾器 和truncatechars過濾器類似只是不會切割html標簽(輸出的結果類似)
#"style": "<h1>abcdefadasds</h1>"
{{ style|truncatechars_html:5}}#輸出<h1>ab...</h1>
default過濾器: 使用方式'{{ value | default('默認值')}}'。如果Value 這個‘key’不存在,那么就會使用‘default’過濾器提供的默認值。
如果你想使用類似於‘python’中判斷某個值是否為false(例如:none,空字符串、空列表、空字典),
那么就必須傳遞另外一個參數‘{{value | default ('默認值',boolean = True)}}’
{{ "nlll"|default:"noneddd" }}#輸出nlll 后面的值是False 就會輸出value上寫的值
default_if_none過濾器 只有值是none是才會用default_if_none提供的默認值 和default的關系是default包含defaul_if_none過濾器
{{ "nonon"|default_if_none:"1" }}#輸出的值為nonon
自定義過濾器
自定義過濾器的步驟:
首先在某個app中,創建一個python包,叫做templatetags,注意,這個包的名字必須為templatetags,不然就找不到。
在這個templatetags包下面,創建一個python文件用來存儲過濾器。
在新建的python文件中,定義過濾器(也就是函數),這個函數的第一個參數永遠是被過濾的那個值,並且如果在使用過濾器的時候傳遞參數,那么還可以定義另外一個參數。但是過濾器最多只能有2個參數。
在寫完過濾器(函數)后,要使用django.template.Library.filter進行注冊,文件my_filter.py。
from django import template
register = template.Library()
def greet(value,word):
return value + word
register.filter("greet",greet)
還要把這個過濾器所在的這個app添加到settings.INSTALLED_AAPS中,不然Django也找不到這個過濾器。
在模板中使用load標簽加載過濾器所在的python包。(文件index.html)
{% load my_filter %}
可以使用過濾器了。