模板过滤器是在显示变量之前调整变量值的简单方式。过滤器使用管道符号(|)指定,
例如:
{ { name|lower }}
上述代码先通过 lower 过滤器调整 { { name }} 变量的值——把文本转换成小写,然后再显示。
过滤器可以串 接,即把一个过滤器的输出传给下一个过滤器。
下述示例获取列表中的第一个元素,然后将其转换成大写:
{ { my_list|first|upper }}
有些过滤器可以接受参数。过滤器的参数放在冒号之后,始终放在双引号内。
例如:
{ { bio|truncatewords:"30" }}
上述示例显示 bio 变量的前 30 个词。
Django内置了很多过滤器:
1、add
把参数加到值上。
例如: { { value|add:"2" }}
如果 value 为 4,输出 6。
2、addslashes
在引号前加上斜线。
可用于转义 CSV 中的字符串。
例如: { { value|addslashes }} 如果 value 为 "I'm using Django",输出 "I\'m using Django"。
3、 capfirst
把值的首字母变成大写。
如果第一个字符不是字母,这个过滤器没有效果。
4、 center
在指定宽度中居中显示值。
例如: "{ { value|center:"14" }}" 如果 value 为 "Django",输出 "␣␣␣␣Django␣␣␣␣"(␣ 表示一个空格)。
5、cut
从字符串中删除参数指定的值。
6、 date
使用指定的格式格式化日期。格式与 PHP 的 date() 函数类似,不过有些区别。
例如: { { value|date:"D d M Y" }}
如果 value 是一个 datetime 对象(例如 datetime.datetime.now() 的结果),输出的字符串类似于 "Fri 01 Jul 2016"。
也可以传入预定义的格式 DATE_FORMAT、DATETIME_FORMAT、SHORT_DATE_FORMAT 或 SHORT_DATETIME_FORMAT,以及使用日期格式说明符自定义的格式。
7、default
如果 value 是假值,使用指定的默认值;否则,使用 value 的值。
例如: { { value|default:"nothing" }}
8、default_if_none
当且仅当 value 为 None 时使用指定的默认值,否则使用 value 的值。
9、 dictsort
按参数指定的键排序字典构成的列表,返回排序后的列表。
例如: { { value|dictsort:"name" }}
10、dictsortreversed
按参数指定的键排序字典构成的列表,返回反向排序后的列表。
11、divisibleby
如果值能被参数整除,返回 True。
例如: { { value|divisibleby:"3" }} 如果 value 为 21,返回 True。
12、escape
转义字符串中的 HTML。具体而言,是做下述替换:
< 转换成 <
> 转换成 >
'(单引号)转换成 '
"(双引号)转换成 "
& 转换成 &
输出字符串时才做转义,因此在一串过滤器中 escape 放在什么位置没关系,它始终作为最后一个过滤器应用。
13、 first
返回列表中的第一个元素。
14、floatformat
不指定参数时,近似浮点数,只保留一位小数(前提是有小数)。如果指定了整数参数,floatformat 近似时 保留相应位数的小数。
如果 value 为 34.23234,{ { value|floatformat:3 }} 输出 34.232。
15、get_digit
从一个数字中取回指定的那一位,1 表示最低位。
16、iriencode
把 IRI(Internationalized Resource Identifier,国际化资源标识符)转换成适合在 URL 中使用的字符串。
17、 join
使用字符串连接列表,类似于 Python 的 str.join(list)。
18、 last
返回列表中的最后一个元素。
19、 length
返回值的长度。字符串和列表都适用。
20、length_is
如果值的长度与参数相等,返回 True,否则返回 False。
例如: { { value|length_is:"4" }}
21、 linebreaks
把纯文本中的换行替换成适当的 HTML 标签。一个换行符替换成一个 HTML
标签,换行之后还有新 行则替换成段落结束标签()。
22、 linebreaksbr
把纯文本中的所有换行都替换成 HTML标签。
23、 linenumbers
显示带有行号的文本。
24、ljust
在指定宽度中左对齐值。
例如: { { value|ljust:"10" }} 如果 value 为 "Django",输出 "Django␣␣␣␣"(␣ 表示一个空格)。
25、 lower
把字符串转换成全小写形式。
26、 make_list
把值转换成列表。值为字符串时,返回各字母构成的列表。
值为整数时,先把参数转换成 Unicode 字符串, 然后再创建列表。
27、 phone2numeric
把电话号码(可能包含字母)转换成等效的数值。输入无需是有效的电话号码,任何字符串都能转换。
例 如: { { value|phone2numeric }} 如果 value 为 800-COLLECT,输出 800-2655328。
28、 pluralize
值不为 1 时返回复数后缀。默认后缀为 "s"。 单词复数变形较为复杂时,可以指定单数和复数后缀,以逗号分开。
例如: You have { { num_cherries }} cherr{ { num_cherries|pluralize:"y,ies" }}.
29、 random
返回指定列表中的一个随机元素。
30、 rjust
在指定宽度中右对齐值。
例如: { { value|rjust:"10" }} 如果 value 为 "Django",输出 "␣␣␣␣Django"(␣ 表示一个空格)。
31、slice
返回列表的切片。
句法与 Python 的列表切片一样。
32、slugify
转换成 ASCII。
把空格转换成连字符。把字母、数字、下划线和连字符之外的字符删除。转换成小写。去掉 首尾的空白。
33、stringformat
根据参数指定的格式说明符格式化变量。
说明符使用 Python 字符串格式化句法,但是不用前导 %。
34、 striptags
尽全力去除 (X)HTML 标签。
例如: { { value|striptags }}
35、 time
使用指定格式格式化时间。与 date 过滤器一样,可以是预定义的 TIME_FORMAT,也可以是自定义的格式。
36、 timesince
把日期格式化为距某一刻的时间(如“4 days, 6 hours”)。
有个可选的参数,指定比较的日期基点(如不指定,与 now 比较)。
37、 timeuntil
距指定日期或日期时间的跨度。
38、title
把字符串转换成标题格式,即单词首字母大写,其余字母小写。
39、truncatechars
字符串的字符串超过指定长度时截断。
截断后的字符串以可翻译的省略号(…)结尾。
例如: { { value|truncatechars:9 }}
40、 truncatechars_html
与 truncatechars 类似,不过知道如何截断 HTML 标签。
41、 truncatewords
在指定的单词个数后截断字符串。
42、 truncatewords_html
与 truncatewords 类似,不过知道如何截断 HTML 标签。
43、 unordered_list
递归遍历嵌套的列表,返回一个 HTML 无序列表(不含起始和结束标签)。
44、 upper
把字符串转换成全大写字母形式。
45、 urlencode
转义,以便在 URL 中使用。
46、 urlize
把文本中的 URL 和电子邮件地址转换成可点击的链接。支持以 http://、https:// 或 www. 开头的 URL。
47、urlizetrunc
与 urlize 一样,把 URL 和电子邮件地址转换成可点击的链接,但是在指定的字符长度处截断 URL。例如:
{ { value|urlizetrunc:15 }}
如果 value 为 "Check out www.djangoproject.com",输出
"Check out <a href="http://www.djangoproject.com" rel="nofollow">www.djangopr…</a>"。
与 urlize 一样,这个过滤器只应该应用于纯文本。
48、wordcount
返回字数。
49、 wordwrap
在指定的长度处换行。
50、 yesno
把 True、False 和 None(可选)映射到字符串“yes”、“no”、“maybe”上,或者是通过参数传入的列表上(以 逗号分隔),根据真假值情况,返回相应的字符串。
例如: { { value|yesno:"yeah,no,maybe" }}
51、static
为了链接保存在 STATIC_ROOT 中的静态文件,Django 提供了 static 模板标签。不管用不用 RequestContext, 都可以使用这个标签。
{% load static %}
<img src="{% static "images/tu.jpg" %}" alt="nopic" />
此外,还可以使用上下文变量。假如向模板传入了 user_stylesheet 变量:
{% load static %}
<link rel="stylesheet" href="{% static user_stylesheet %}" type="text/css" media="screen" />
如果只想获取静态文件的 URL,而不显示,可以使用稍微不同的调用方式:
{% load static %}
{% static "images/tu.jpg" as mypic %}
<img src="{
{ mypic }}"></img>