32 Django模板 DTL常用過濾器(1)

2021-09-10 09:37:32 字數 1630 閱讀 9655

為什麼需要過濾器

因為在dtl中,不支援函式的呼叫形式「()」,因此不能給函式傳遞引數,這將有很大的侷限性。而過濾器其實就是乙個函式,可以對需要處理的引數進行處理,並且還可以額外置收乙個引數(也就是說,最多只能由2個引數)。

add過濾器

將傳進來的引數新增到原來的值上面。這個過濾器會嘗試將值和引數轉換成整形然後進行相加。如果轉換成整形過程中失敗了,那麼會將值和引數進行拼接。如果是字串,那麼會拼接成字串,如果是列表,那麼會拼接成乙個列表。示例**如下:

}
如果value是等於4,那麼結果將是6。如果value是等於乙個普通的字串,比如abc,那麼結果將是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過濾器

移除值中所有指定的字串。類似於python中的replace(args,"")。示例**如下:

}
以上示例將會移除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過濾器

將乙個日期按照指定的格式,格式化成字串。示例**如下:

# 資料

context =

# 模版

}

那麼將會輸出2018/02/01。其中y代表的是四位數字的年份,m代表的是兩位數字的月份,d代表的是兩位數字的日。

還有更多時間格式化的方式。見下表。

格式字元 描述 示例

y 四位數字的年份 2018

m 兩位數字的月份 01-12

n 月份,1-9前面沒有0字首 1-12

d 兩位數字的天 01-31

j 天,但是1-9前面沒有0字首 1-31

g 小時,12小時格式的,1-9前面沒有0字首 1-12

h 小時,12小時格式的,1-9前面有0字首 01-12

g 小時,24小時格式的,1-9前面沒有0字首 1-23

h 小時,24小時格式的,1-9前面有0字首 01-23

i 分鐘,1-9前面有0字首 00-59

s 秒,1-9前面有0字首 00-59

32 Django高階 全文檢索

下面來講解操作步驟 1.在虛擬環境中依次安裝包 pip install django haystack pip install whoosh pip install jieba2.修改settings.py檔案 haystack haystack connections 自動生成索引 haystac...

Django框架學習 9模板詳解 DTL

html頁面 檢視處理函式 return render request,html頁面 字典資料 數字型別 字串型別 列表型別 字典型別 物件型別 例項演練 將字典值傳遞給頁面 def temp var request dict book bookinfo book.btitle 物件屬性 conte...

Django學習6 DTL常用過濾器及模板結構優化

目錄 一 為什麼要有過濾器?二 常用過濾器 1.常用過濾器add 2.常用過濾器cut 3.常用過濾器date 4.常用過濾器default 5.常用過濾器first last 6.常用過濾器floatformat 7.常用過濾器striptags 8.常用過濾器runcatechars 三 自定義...