django模板2-常用過濾器(上)
模版常用過濾器
在模版中,有時候需要對一些資料進行處理以後才能使用。一般在Python
中我們是通過函式的形式來完成的。而在模版中,則是通過過濾器來實現的。過濾器使用的是|
來使用。比如使用add
過濾器,那麼示例程式碼如下:
{{ value|add:"2" }}
那麼以下就講下在開發中常用的過濾器。
add
將傳進來的引數新增到原來的值上面。這個過濾器會嘗試將值
和引數
轉換成整形然後進行相加。如果轉換成整形過程中失敗了,那麼會將值
和引數
進行拼接。如果是字串,那麼會拼接成字串,如果是列表,那麼會拼接成一個列表。示例程式碼如下:
{{ value|add:"2" }}
如果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:" " }}
以上示例將會移除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 = { "birthday": datetime.now() } # 模版 {{ birthday|date:"Y/m/d" }}
那麼將會輸出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 |