过滤器可以用来修改变量的显示样式。
使用方式
格式:{{变量|过滤器方法}}。可以连续使用,形式如:{{变量|过滤器方法1|过滤器方法2}}。
过滤器如下
Lower
转化为小写字母
格式:变量|lower
Upper
转化为大写字母
格式:变量|upper
Join
过滤器可以传递参数,参数用引号包起来
格式:列表|join:’#’
示例:
视图
def template2(request):
grades = Grades.objects.get(pk=1)
students = Students.stuObj2.filter(grades=1)
testlist = ['This', 'is', 'an', 'example', 'template']
return render(request, 'test/index.html', {
'title': 'This is an example template',
'info': grades,
'students': students,
'testlist': testlist
})
模板
<ul>
<li>{{title}}</li>
<li>{{title|lower}}</li>
<li>{{title|upper}}</li>
<li>{{testlist|join:'#'}}</li>
</ul>
效果
Default
如果一个变量没有被提供,或者值为false、空,可以使用默认值。
格式:{{var|default:'没有'}}
示例:
<li>{{test_default|default:'未定义'}}</li>
Date
根据给定格式转换日期为字符串
格式:{{dateVal|date:'Y-m-d'}}
示例:
{{info.create_time|date:'Y-m-d'}}
Capfirst
首字母大写
格式:{{ value|capfirst }}
示例:
{{'title'|capfirst}}
Cut
删除指定值,可去掉字符串中的空格
示例:
{{title|cut:' '}}
Length
显示一个字符串或者数组的长度,例如{{ value|length }}。
加减乘除
Add:过滤器,加减使用
Widthratio
对于创建条形图等,该标签计算给定值与最大值的比率,然后将该比率应用于一个常数。
格式 {% widthratio this_value max_value 100 %}
表示 this_value/max_value * 100
示例:
<h2>加减乘除</h2>
<ul>
<li>num = {{num}}</li>
<!--加法-->
<li>{{num}}+{{num}}={{num|add:10}}</li>
<!--减法-->
<li>{{num}}+{{num}}={{num|add:-5}}</li>
<!--乘法 num * 5-->
<li>{{num}}*5={% widthratio num 1 5 %}</li>
<!--除法 num / 5-->
<li>{{num}}/5={% widthratio num 5 1 %}</li>
</ul>
组合用法
<ul>
{% for stu in students %}
{% if forloop.counter|divisibleby:2 %}
<li style="color:red">{{forloop.counter}}-{{stu.name}}</li>
{% else %}
<li style="color:blue">{{forloop.counter}}-{{stu.name}}</li>
{% endif %}
{% empty %}
<li>无数据</li>
{% endfor %}
</ul>
注意:变量、管道符(|)和过滤器方法之间不能有空格。