转载地址:http://my.oschina.net/012345678/blog/180376
一、形式:小写
★{{ name | lower }}
二、串联:先转义文本到HTML,再转换每行到 <p> 标签
{{ my_text|escape|linebreaks }}
三、过滤器的参数
显示前30个字
★{{ bio | truncatewords:"30" }}
格式化
★{{ pub_date | date:"F j, Y" }}
过滤器列表
{{ 123|add:"5" }} 给value加上一个数值
{{ "AB'CD"|addslashes }} 单引号加上转义号,一般用于输出到javascript中
★{{ "abcd"|capfirst }} 第一个字母大写
{{ "abcd"|center:"50" }} 输出指定长度的字符串,并把值对中
★{{ "123spam456spam789"|cut:"spam" }} 查找删除指定字符串
{{ value|date:"F j, Y" }} 格式化日期
★{{ value|default:"(N/A)" }} 值不存在,使用指定值
{{ value|default_if_none:"(N/A)" }} 值是None,使用指定值
{{ 列表变量|dictsort:"数字" }} 排序从小到大
{{ 列表变量|dictsortreversed:"数字" }} 排序从大到小
{% if 92|divisibleby:"2" %} 判断是否整除指定数字
★★{{ string|escape }} 转换为html实体
★{{ list|first }} 返回列表第一个元素
★{{ 13.414121241|floatformat }} 保留1位小数,可为负数,几种形式
★{{ 13.414121241|floatformat:"2" }} 保留2位小数
★{{ list|join:", " }} 用指定分隔符连接列表
★{{ list|length }} 返回列表个数
{% if 列表|length_is:"3" %} 列表个数是否指定数值
{{ "ABCD"|linebreaks }} 用新行用<p> 、 <br /> 标记包裹
{{ "ABCD"|linebreaksbr }} 用新行用<br /> 标记包裹
{{ 变量|linenumbers }} 为变量中每一行加上行号
★{{ 列表|random }} 返回列表的随机一项
{{ 列表|slice:":2" }} 切片
★{{ "E<A>A</A>B<C>C</C>D"|striptags }} 剥去[X]HTML语法标记
★{{ "A B C D E F"|truncatewords:"3" }} 截取指定个数的单词
★{{ string|upper }} 全部大写
★{{ "B C D E F"|wordcount }} 单词数
divisibleby 使用形式:{{ value | divisibleby:arg}},如果value是21,arg是3,那么输出将是True 意义:如果value能够被arg整除,那么返回值将是True
使用 safe 过滤器,可以关闭针对某个变量的自动转义
This will be escaped: ` data `
This will not be escaped: {{ data|safe }}safe 就是要表达 已经安全了 或 内容是安全的 这种意思。若上例中的 data 的内容为 '<b>' ,则输出为:
This will be escaped: <b>
This will not be escaped: <b>模板的一部分
用 autoescape 标签把模板(或其中一部分)括起来,可以控制其中的变量输出是否要进行自动转义。例如:
{% autoescape off %}
Hello ` name `
{% endautoescape %}
字符串常量和自动转义
如前文所述,过滤器的参数可以是字符串:
{{ data|default:"This is a string literal." }}在向模板中插入字符串常量时,它们都是 不会 被自动转义的。这是因为模板作者控制着字符串常量的内容,在编写模板时就可以保证其中的文字已经正确转义了。
这就意味着要输出 3 < 2 时应该写成:
{{ data|default:"3 < 2" }}而不是:
{{ data|default:"3 < 2" }} <-- Bad! Don't do this.
自定义库和模板的继承
当载入一个自定义的标签或过滤器库,这些标签和过滤器只对当前的模板有效,任何父模板或子模板都无法访问它们。