Django模板语言,过滤器整理
1. add
{{ value|add:"2" }}
把add后的参数加给value;
处理时,过滤器首先会强制把两个值转换成Int类型。 如果强制转换失败, 它会试图使用各种方式吧两个值相加。
实例:
{{ arg|add:val }}
1)arg是5,val是3,将会输出8
2)arg是5,val是'3',将会输出8
3)arg是'jason',val是'2',将会输出jason2
4)arg是'jason',val是2,将会输出空
5)arg是[1, 2, 3],val是[4],将会输出[1, 2, 3, 4]
2. addslashes
{{ value|addslashes }}
在引号前面加上斜杆
像这样:
如果value
是 "I'm using Django"
, 输出将变成 "I\'m using Django"
3. capfirst
{{ value|capfirst}}
将变量的第一个字母变成大写,如果第一个字符不是字母,则过滤器不生效
如果 "value"
是 "django"
, 输出将变成 Django
。
4. center
{{ value|center:16}}
使"value"在给定的宽度范围内居中。
5. cut
移除value中所有的与给出的变量相同的字符串
{{ value|cut:" "}}
如果value
为“String with spaces”
,输出将为"Stringwithspaces"
。
6. date
根据给定格式对一个date变量格式化
可用的格式字符串:
格式化字符 | 描述 | 示例输出 |
---|---|---|
a | 'a.m.' 或'p.m.' (请注意,这与PHP的输出略有不同,因为这包括符合Associated Press风格的期间) | 'a.m.' |
A | 'AM' 或'PM' 。 | 'AM' |
b | 月,文字,3个字母,小写。 | 'jan' |
B | 未实现。 | |
c | ISO 8601格式。 (注意:与其他格式化程序不同,例如“Z”,“O”或“r”,如果值为naive datetime,则“c”格式化程序不会添加时区偏移量(请参阅datetime.tzinfo ) 。 | 2008-01-02T10:30:00.000123+02:00 或2008-01-02T10:30:00.000123 如果datetime是天真的 |
d | 月的日子,带前导零的2位数字。 | '01' 到'31' |
D | 一周中的文字,3个字母。 | “星期五” |
e | 时区名称 可能是任何格式,或者可能返回一个空字符串,具体取决于datetime。 | '' 、'GMT' 、'-500' 、'US/Eastern' 等 |
E | 月份,特定地区的替代表示通常用于长日期表示。 | 'listopada' (对于波兰语区域,而不是'Listopad' ) |
f | 时间,在12小时的小时和分钟内,如果它们为零,则分钟停留。 专有扩展。 | '1' ,'1:30' |
F | 月,文,长。 | '一月' |
g | 小时,12小时格式,无前导零。 | '1' 到'12' |
G | 小时,24小时格式,无前导零。 | '0' 到'23' |
h | 小时,12小时格式。 | '01' 到'12' |
H | 小时,24小时格式。 | '00' 到'23' |
i | 分钟。 | '00' 到'59' |
I | 夏令时间,无论是否生效。 | '1' 或'0' |
j | 没有前导零的月份的日子。 | '1' 到'31' |
l | 星期几,文字长。 | '星期五' |
L | 布尔值是否是一个闰年。 | True 或False |
m | 月,2位数字带前导零。 | '01' 到'12' |
M | 月,文字,3个字母。 | “扬” |
n | 月无前导零。 | '1' 到'12' |
N | 美联社风格的月份缩写。 专有扩展。 | 'Jan.' ,'Feb.' ,'March' ,'May' |
o | ISO-8601周编号,对应于使用闰年的ISO-8601周数(W)。 对于更常见的年份格式,请参见Y。 | '1999年' |
O | 与格林威治时间的差异在几小时内。 | '+0200' |
P | 时间为12小时,分钟和'a.m。'/'p.m。',如果为零,分钟停留,特殊情况下的字符串“午夜”和“中午”。 专有扩展。 | '1 am' ,'1:30 pm' / t3>,'midnight','noon','12:30 pm' / T10> |
r | RFC 5322格式化日期。 | 'Thu, 21 Dec 2000 16:01:07 +0200' |
s | 秒,带前导零的2位数字。 | '00' 到'59' |
S | 一个月的英文序数后缀,2个字符。 | 'st' ,'nd' ,'rd' 或'th' |
t | 给定月份的天数。 | 28 to 31 |
T | 本机的时区。 | 'EST' ,'MDT' |
u | 微秒。 | 000000 to 999999 |
U | 自Unix Epoch以来的二分之一(1970年1月1日00:00:00 UTC)。 | |
w | 星期几,数字无前导零。 | '0' (星期日)至'6' (星期六) |
W | ISO-8601周数,周数从星期一开始。 | 1 ,53 |
y | 年份,2位数字。 | '99' |
Y | 年,4位数。 | '1999年' |
z | 一年中的日子 | 0 到365 |
Z | 时区偏移量,单位为秒。 UTC以西时区的偏移量总是为负数,对于UTC以东时,它们总是为正。 | -43200 到43200 |
实例:
now = datetime.datetime.now()
1){{ now|date:'Y-m-d H:i:s'}}
输出类似:2018-10-09 11:15:22
2){{ now|date }}
输出类似:Oct. 9, 2018
传递的格式可以是预定义的格式
DATE_FORMAT
,DATETIME_FORMAT
,SHORT_DATE_FORMAT
或SHORT_DATETIME_FORMAT
3){{ now|date:"DATETIME_FORMAT" }}
输出类似:Oct. 9, 2018, 11:19 a.m.
7. default
如果value的计算结果为False
,则使用给定的默认值。 否则,使用该value。
{{ value|default:"nothing" }}
8. default_if_none
{{ value|default_if_none:"nothing"}}
当且仅当value为None
,则使用给定的默认值。 否则,使用该value。
注意,如果给出一个空字符串,默认值将不被使用。
9. dictsort
{{ value|dictsort:"name" }}
接受一个字典列表,并返回按参数中给出的键排序后的列表。
实例:
Value = [ {'name': 'zed', 'age': 19}, {'name': 'amy', 'age': 22}, {'name': 'joe', 'age': 31}, ]
{{ Value|dictsort:'name' }} {{ Value|dictsort:'age' }}
输出:
[{'name': 'amy', 'age': 22}, {'name': 'joe', 'age': 31}, {'name': 'zed', 'age': 19}]
[{'name': 'zed', 'age': 19}, {'name': 'amy', 'age': 22}, {'name': 'joe', 'age': 31}]
10. dictsortreversed
获取字典列表,并返回按照参数中给出的键按相反顺序排序的列表。 这与上面的过滤器完全相同,但返回的值将是相反的顺序。
11. divisibleby
{{ value|divisibleby:“2” }}
如果value可以被给出的参数整除,则返回 True
实例:
value = 12
{{ value|divisibleby:“2” }}
输出:True
12. filesizeformat
格式化为“可读”文件大小(即'13 KB'
,t4> MB'
,'102 bytes'
等)。
{{ value|filesizeformat }}
实例:
value = 1234567890
{{ value|filesizeformat }}
输出:1.1 GB
13. first
{{ value|first }}
返回序列中的第一项(字符串、列表、元组等)
如果value
是列表['a', 'b', 'c']
,输出将为'a'
。
14. floatformat
当不使用参数时,将浮点数舍入到小数点后一位;使用参数时,保留参数指定的位数
实例:
pi = 3.1415926
{{ pi|floatformat }}
{{ pi|floatformat:0 }}
{{ pi|floatformat:2 }}
输出:
3.1 3 3.14
15. get_digit
给定一个整数,返回所请求的数字,其中1是最右边的数字,2是第二个最右边的数字等。 返回无效输入的原始值(如果输入或参数不是整数,或参数小于1)。否则,输出总是一个整数。
实例:
{{ value|get_digit:"2" }}
如果
value
为123456789
,则输出将为8
。
16. join
使用字符串连接列表,例如Python的str.join(list)
{{ value|join:" // " }}
如果value
是列表['a', 'b', 'c'],输出将为“a // b // C“。
17. last
返回列表中的最后一个项目
{{ value|last }}
如果value
是列表['a', 'b', 'c'],输出将为'c'
18. length
返回值的长度
{{ value|length }}
如果value
是['a', 'b', 'c', 'd']
或"abcd"
,输出将为4
。
对于未定义的变量,过滤器返回0
。
19. length_is
如果值的长度是参数,则返回True
,否则返回False
。
{{ value|length_is:"4" }}
如果value是['a', 'b', 'c', 'd']或"abcd",输出将为True。
20. linebreaks
替换纯文本中的换行为正确的HTML标签;单独的一个换行变成(<br/>
) ,原文本用p标签包裹起来。
如果value
为Joel\nis a slug
,输出将为<p>Joel<br/>is a slug</p>
。
21. linebreaksbr
与linebreaks类似, 区别是, linebreaksbr只替换换行, 替换完成后没有p标签包裹.
如果value
为Joel\nis a slug
,输出将为Joel<br/>is a slug
。
22. linenumbers
输出多行文本时, 在行前显示行号.
{{ value|linenumbers }}
如果value
为:
one two three
输出将是:
- one
- two
- three
23. ljust
将给定宽度的字段中的值左对齐。
"{{ value|ljust:"10" }}"
如果value
为Django
,则输出将为“Django ”
。
24. lower
将字符串转换为全部小写。
如果value
是ABC
, 则输出将为abc
25. make_list
返回转换为列表的值。
{{ value|make_list }}
如果value
是字符串"Joel"
,输出将是列表['J', 'o' , 'e', 'l']
。 如果value
为123
,输出将为列表['1', '2', '3']
。
26. pluralize
如果值不是1则返回一个复数形式 , 通常用 's'
表示.
例如:
You have {{ num_messages }} message{{ num_messages|pluralize }}.
如果num_messages
是1
,则输出将为 You have 1 message.
如果num_messages
是2
,输出将为 You have 2 messages.
另外如果你需要的不是 's'
后缀的话, 你可以提供一个备选的参数给过滤器;
例如:
You have {{ num_walruses }} walrus{{ num_walruses|pluralize:"es" }}.
对于非一般形式的复数,你可以同时指定 单复数形式,用逗号隔开.
例如:
You have {{ num_cherries }} cherr{{ num_cherries|pluralize:"y,ies" }}.
27. pprint
用于调试, 方便查看.
28. random
返回给定列表中的随机项。
{{ value|random }}
如果value是['a', 'b', 'c', 'd'], 输出可能是'c'.
29. rjust
右对齐给定宽度字段中的值。
30. safe
将字符串标记为在输出之前不需要进一步的HTML转义。 当自动转义关闭时,此过滤器不起作用。
31. safeseq
将safe
过滤器应用于序列的每个元素。 与对序列进行操作的其他过滤器(例如join
)一起使用非常有用。
{{ some_list|safeseq|join:", " }}
32. slice
返回列表的一部分。
{{ some_list|slice:":2" }}
如果some_list
为['a', 'b', 'c']
,那么输出将是['a', 'b']
。
33. striptags
尽一切可能努力剥离所有[X] HTML标签。
{{ value|striptags }}
如果value为"<b>cu ti</b>", 输出结果为cuti(不带样式).
34. time
根据给定的格式格式化时间。
实例:
now = datetime.datetime.now()
{{ now|time:'H:i:s' }}
输出类似:
13:25:53
35. timesince
将日期格式设为自该日期起的时间(例如,“4天,6小时”)。
实例:
now = datetime.datetime.now()
blog_date = now - datetime.timedelta(days=2)
{{ blog_date|timesince:now }}
{{ now|timesince:blog_date }}
输出类似:
2 days 0 minutes
36. timeuntil
与timesince类似
实例:
now = datetime.datetime.now()
blog_date = now - datetime.timedelta(days=2)
{{ blog_date|timeuntil:now }}
{{ now|timeuntil:blog_date }}
输出类似:
0 minutes 2 days
37. title
将字符串中的每个单词首字母转为大写
{{ value|title }}
如果value
为“my FIRST post”
,输出将为“My First Post”
。
38. truncatechars
如果字符串字符多于指定的字符数量,那么会被截断。 截断的字符串将以可翻译的省略号序列(“...”)结尾。
{{ value|truncatechars:9 }}
如果value
为“myFIRSTpost”
,输出将为“MyFirst...”
。
39.truncatewords
在一定数量的字后截断字符串。
{{ value|truncatewords:2 }}
如果value
为“my name is post”
,输出将为“My name ...”
。
40. upper
将字符串转换为大写形式
{{ value|upper }}
如果value
是abc
, 则输出将为ABC
41. urlencode
转义要在URL中使用的值。
{{ value|urlencode }}
如果value
为"https://www.example.org/foo?a=b&c=d"
,输出将为"https%3A//www.example.org/foo%3Fa%3Db%26c%3Dd"
可以提供包含不应该转义的字符的可选参数。
如果未提供,则'/'字符被假定为安全的。 当所有字符应该转义时,可以提供空字符串。 像这样:
{{ value|urlencode:"" }}
如果value
为"https://www.example.org/"
,输出将为"https%3A%2F%2Fwww.example.org%2F"
42. wordcount
返回字数(单词数)
{{ value|wordcount }}
如果value
是“Joel is a slug”,输出将为4
43. wordwrap
以指定的行长度换行单词。