Django模版中的过滤器详细解析 Django filter大全
就象本章前面提到的一样,模板过滤器是在变量被显示前修改它的值的一个简单方法。 过滤器看起来是这样的:
{{ name|lower }}
显示的内容是变量 {{ name }} 被过滤器 lower 处理后的结果,它功能是转换文本为小写。 使用 | 来应用过滤器。
过滤器可以被 串联 ,就是说一个过滤器的输出可以被输入到下一个过滤器。这里有一个常用的 需求,先转义文本到HTML,再转换每行到 <p> 标签:
{{ my_text|escape|linebreaks }}
有些过滤器有参数。过滤器参数看起来是这样的:
{{ bio|truncatewords:"30" }}
这个将显示变量 bio 的前30个词。过滤器参数总是使用双引号标识。
下面是一些最重要的过滤器;附录F有完整的过滤器列表。
addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。 这在处理包含JavaScript的文本时是非常有用的。
date : 按指定的格式字符串参数格式化 date 或者 datetime 对象, 范例:
{{ pub_date|date:"F j, Y" }}
格式参数的定义在附录F中。
escape : 转义 &符号,引号,<,> 符号。 这在确保用户提交的数据是有效的XML或XHTML时是非常有用的。 具体上, escape 做下面这些转换:
* 转换 & 到 &
* 转换 < 到 <
* 转换 > 到 >
* 转换 " (双引号) 到 "
* 转换 ' (单引号) 到 '
length : 返回变量的长度。你可以对列表或者字符串,或者任何知道怎么测定长度的Python 对象使用这个方法(也就是说,有 __len__() 方法的对象)。
(1)Add:给value加上一个数值,比如{{123@add:"5"}}返回128.
(2)addslahes:单引号加上转义字符。
(3)capfirst:第一个字符大写,比如{{"good"|capfirst}} 返回Good。
(4)center:输出指定长度的字符串,把变量居中,比如{{"abcd"|center:"50"}}
(5)cut:删除指定字符串。比如{{"You are not a Englishman"|cut:"not"}}.
(6)date:格式化日期
(7)default:如果值不存在,则使用默认值代替,比如{{value|default:"(N/A)"}}。
(8)default_if_none:如果值为None,则使用默认值代替,使用方式与default类似。
(9)dictsort:按某字段排序,变量必须是一个dictionary。
{%for moment in moments|dictsort:"id"%} *{{moment.headline}} {{}%endfor%}
如上代码指定moments用id字段排序后逐个进行headline输出。
(10)dictsortreversed:按某字段倒叙排序。变量必须是一个dictionary。
(11)divisibleby: 判断是否可以被某数字整除。
(12)escape:按HTML转意,比如将"<"转换为"<",将">"转换为">",
(13)filesizeformat:增加数字的可读性,转换结果为13KB,89MB,3Bytes。
(14)First:返回列表的第一个元素,变量必须是列表,比如{{['Eenlish','Chinese',Japanses]|first}}
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
(26)
(27)
(28)
(29)
(30)
(31)
(32)
好记忆不如烂笔头