本文由 發(fā)布,轉(zhuǎn)載請(qǐng)注明出處,如有問題請(qǐng)聯(lián)系我們! 發(fā)布時(shí)間: 2021-05-24Django(31)模板中常用的過濾器
加載中Django(31)模版中常見的過濾裝置
免費(fèi)模板常見過濾裝置
在免費(fèi)模板中,有時(shí)必須對(duì)一些數(shù)據(jù)信息開展解決之后才可以應(yīng)用。一般在Python
中我們都是根據(jù)涵數(shù)的方式來進(jìn)行的。而在免費(fèi)模板中,則是根據(jù)過濾裝置來完成的。過濾裝置應(yīng)用的是|來應(yīng)用。
add
將傳進(jìn)去的主要參數(shù)加上到原先的值上邊。這一過濾裝置會(huì)試著將值和主要參數(shù)轉(zhuǎn)化成整形美容隨后開展求和。假如轉(zhuǎn)化成整形美容全過程中失敗了,那麼會(huì)將值和主要參數(shù)開展拼湊。如果是字符串?dāng)?shù)組,那麼會(huì)拼湊成字符串?dāng)?shù)組,如果是目錄,那麼會(huì)拼湊成一個(gè)目錄。實(shí)例編碼以下:
{{ value|add:"2" }}
假如value
是相當(dāng)于4,那麼結(jié)果將是6。假如value是相當(dāng)于一個(gè)一般的字符串?dāng)?shù)組,例如abc
,那麼結(jié)果將是abc2
。add過濾裝置的源碼以下:
def add(value, arg):
"""Add the arg to the value."""
try:
return int(value) int(arg)
except (ValueError, TypeError):
try:
return value arg
except Exception:
return ''
cut
清除值中全部特定的字符串?dāng)?shù)組。類似python
中的replace(args,"")
。實(shí)例編碼以下:
{{ value|cut:" " }}
之上實(shí)例可能清除value
中全部的空格字符。cut過濾裝置的源碼以下:
def cut(value, arg):
"""Remove all values of arg from the given string."""
safe = isinstance(value, SafeData)
value = value.replace(arg, '')
if safe and arg != ';':
return mark_safe(value)
return value
date
將一個(gè)日期依照特定的文件格式,恢復(fù)出廠設(shè)置成字符串?dāng)?shù)組。實(shí)例編碼以下:
# 數(shù)據(jù)信息
context = {
"birthday": datetime.now()
}
# 免費(fèi)模板
{{ birthday|date:"Y/m/d" }}
那麼可能輸出2018/02/01
。在其中Y意味著的是四位數(shù)據(jù)的年代,m意味著的是倆位數(shù)據(jù)的月份,d意味著的是倆位數(shù)據(jù)的日。
也有大量時(shí)間格式化的方法。見下表。
文件格式標(biāo)識(shí)符 | 敘述 | 實(shí)例 |
---|---|---|
Y | 四位數(shù)據(jù)的年代 | 2020 |
m | 倆位數(shù)據(jù)的月份 | 01-12 |
n | 月份,1-9前邊沒有0作為前綴 | 1-12 |
d | 倆位數(shù)據(jù)的天 | 01-31 |
j | 天,但是1-9前邊沒有0作為前綴 | 1-31 |
g | 鐘頭,12小時(shí)文件格式的,1-9前邊沒有0作為前綴 | 1-12 |
h | 鐘頭,12小時(shí)文件格式的,1-9前邊有0作為前綴 | 01-12 |
G | 鐘頭,24小時(shí)文件格式的,1-9前邊沒有0作為前綴 | 1-23 |
H | 鐘頭,24小時(shí)文件格式的,1-9前邊有0作為前綴 | 01-23 |
i | 分鐘,1-9前邊有0作為前綴 | 00-59 |
s | 秒,1-9前邊有0作為前綴 | 00-59 |
default
假如值被評(píng)定為False
。例如[]
,""
,None
,{}
等這種在if
分辨中為False
的值,都是會(huì)應(yīng)用default
過濾裝置給予的初始值。實(shí)例編碼以下:
{{ value|default:"nothing" }}
假如value
是相當(dāng)于一個(gè)空的字符串?dāng)?shù)組。例如""
,那麼之上編碼可能輸出nothing
。
default_if_none
假如值是None
,那麼可能應(yīng)用default_if_none
給予的初始值。這一和default
有差別,default
是全部被評(píng)定為False
的都是會(huì)應(yīng)用初始值。而default_if_none
則僅有這一值是相當(dāng)于None
的情況下才會(huì)應(yīng)用初始值。實(shí)例編碼以下:
{{ value|default_if_none:"nothing" }}
假如value
是相當(dāng)于""
也即空字符串,那麼之上會(huì)輸出空字符串。假如value
是一個(gè)None
值,之上編碼才會(huì)輸出nothing
。
first
返回列表/元組/字符串?dāng)?shù)組中的第一個(gè)原素。實(shí)例編碼以下:
{{ value|first }}
假如value是相當(dāng)于['a','b','c']
,那麼輸出可能是a。
last
返回列表/元組/字符串?dāng)?shù)組中的最后一個(gè)原素。實(shí)例編碼以下:
{{ value|last }}
假如value
是相當(dāng)于['a','b','c']
,那麼輸出可能是c。
floatformat
應(yīng)用四舍五入的方法恢復(fù)出廠設(shè)置一個(gè)浮點(diǎn)數(shù)種類。假如這一過濾裝置沒有傳送一切主要參數(shù)。那麼總是在小數(shù)位后保存一個(gè)小數(shù),假如小數(shù)后邊全是0,那麼總是保留整數(shù)。自然還可以傳送一個(gè)主要參數(shù),標(biāo)志實(shí)際要保存好多個(gè)小數(shù)。
- 要是沒有傳送主要參數(shù):
value | 免費(fèi)模板編碼 | 輸出 |
---|---|---|
34.23234 | {{ value|floatformat }} | 34.2 |
34.000 | {{ value|floatformat }} | 34 |
34.260 | {{ value|floatformat }} | 34.3 |
- 假如傳送主要參數(shù):
value | 免費(fèi)模板編碼 | 輸出 |
---|---|---|
34.23234 | {{ value|floatformat:3 }} | 34.232 |
34.000 | {{ value|floatformat:3 }} | 34.000 |
34.26000 | {{ value|floatformat:3 }} | 34.260 |
join
相近與Python
中的join
,將目錄/元組/字符串?dāng)?shù)組用特定的標(biāo)識(shí)符開展拼湊。實(shí)例編碼以下:
{{ value|join:"/" }}
假如value
是相當(dāng)于['a','b','c']
,那麼之上編碼將輸出a/b/c。
length
獲得一個(gè)目錄/元組/字符串?dāng)?shù)組/詞典的長(zhǎng)短。實(shí)例編碼以下:
{{ value|length }}
假如value
是相當(dāng)于['a','b','c']
,那麼之上編碼將輸出3。假如value
為None
,那麼之上將回到0。
lower
將值中全部的標(biāo)識(shí)符所有轉(zhuǎn)化成小寫字母。實(shí)例編碼以下:
{{ value|lower }}
假如value
是相當(dāng)于Hello World
。那麼之上編碼將輸出hello world
。
upper
類似lower,只不過將特定的字符串?dāng)?shù)組所有轉(zhuǎn)化成英文大寫。
random
在被給的目錄/字符串?dāng)?shù)組/元組中任意的挑選一個(gè)值。實(shí)例編碼以下:
{{ value|random }}
假如value
是相當(dāng)于['a','b','c']
,那麼之上編碼會(huì)在目錄中任意挑選一個(gè)。
safe
標(biāo)識(shí)一個(gè)字符串?dāng)?shù)組是安全性的。也即會(huì)關(guān)閉這一字符串?dāng)?shù)組的全自動(dòng)轉(zhuǎn)義。實(shí)例編碼以下:
{{value|safe}}
假如value
是一個(gè)不包含一切特殊符號(hào)的字符串?dāng)?shù)組,例如<a>
這類,那麼之上編碼便會(huì)把字符串?dāng)?shù)組一切正常的鍵入。假如value
是一串html
編碼,那麼之上編碼可能把這個(gè)html
編碼3D渲染到電腦瀏覽器中。
slice
類似Python
中的切成片實(shí)際操作。實(shí)例編碼以下:
{{ some_list|slice:"2:" }}
之上編碼可能給some_list
從4開始做切成片實(shí)際操作。
stringtags
刪掉字符串?dāng)?shù)組中全部的html
標(biāo)識(shí)。實(shí)例編碼以下:
{{ value|striptags }}
假如value
是<strong>hello world</strong>
,那麼之上編碼可能輸出hello world
。
truncatechars
假如給出的數(shù)組長(zhǎng)度超出了過濾裝置特定的長(zhǎng)短。那麼便會(huì)開展激光切割,而且會(huì)拼湊三個(gè)點(diǎn)來做為句號(hào)。實(shí)例編碼以下:
{{ value|truncatechars:5 }}
假如value
是相當(dāng)于北京歡迎您~,那麼輸出的結(jié)果是北京市...。很有可能你能想,為何不容易北京歡迎您...呢。由于三個(gè)點(diǎn)也占了三個(gè)標(biāo)識(shí)符,因此 北京市 三個(gè)點(diǎn)的字符長(zhǎng)度便是5。
truncatechars_html
類似truncatechars
,只不過不容易激光切割html
標(biāo)識(shí)。實(shí)例編碼以下:
{{ value|truncatechars:5 }}
假如value
是相當(dāng)于<p>北京歡迎您~</p>
,那麼輸出將是<p>北京市...</p>。