Django自带过滤器总结

来源:互联网 发布:前端解析excel成json 编辑:程序博客网 时间:2024/05/18 01:08
一、形式:小写 

★{{ 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: &lt;b&gt; 
This will not be escaped: <b>模板的一部分 

用 autoescape 标签把模板(或其中一部分)括起来,可以控制其中的变量输出是否要进行自动转义。例如: 

{% autoescape off %} 
    Hello {{ name }} 
{% endautoescape %} 

字符串常量和自动转义 
如前文所述,过滤器的参数可以是字符串: 


{{ data|default:"This is a string literal." }}在向模板中插入字符串常量时,它们都是 不会 被自动转义的。这是因为模板作者控制着字符串常量的内容,在编写模板时就可以保证其中的文字已经正确转义了。 

这就意味着要输出 3 < 2 时应该写成: 

{{ data|default:"3 &lt; 2" }}而不是: 

{{ data|default:"3 < 2" }}  <-- Bad! Don't do this. 

自定义库和模板的继承 
当载入一个自定义的标签或过滤器库,这些标签和过滤器只对当前的模板有效,任何父模板或子模板都无法访问它们。
0 0