Django 模板语言(模板变量、模板标签)和模板过滤器(自定义过滤器)
作者:互联网
使用模板变量,.前面可能是一个字典,可能是一个对象,还可能是一个列表
view
#模板变量使用
def templateVarTest(request):
my_dict={'title':'字典键值','book':'书名'}
my_list=[1,2,3]
#定义模板上下文,也可以传入对象,类似这样
context={'mydict':my_dict,'mylist':my_list}
return render(request,'loginApp/templateVarTest.html',context)
html
<body>
使用字典属性:{{ mydict.title }}<br>
{{ mydict.book }}<br>
使用列表属性:{{ mylist.1 }}
</body>
逻辑运算:not and or
<ul>
{% for i in mylist %}
<li>{{ forloop.counter }}----------{{ i }}</li>
{% endfor %}
</ul>
{% if mylist.0 == mylist.1 %}
相等
{% elif mylist.0 >= mylist.1 %}
大于等于
{% else %}
最后
{% endif %}
length过滤器:{{ mydict|length }}
default过滤器:{{ content|default:'hello' }}
自定义过滤器
1、在app下创建python package,命名为templatetags(名称不能变)
2、templatetags下创建一个python文件myfilters。(因为过滤器就是python 函数)
3、工程settings下添加templatetags的定义(跟添加app一样)
4、在myfilters下,操作例子如下:
from django.template import Library
#自定义过滤器
register=Library()
@register.filter
def mod(num):
return num%2==0
#自定义过滤器,至少一个参数,最多两个
@register.filter
def mod_val(num,val):
return num%val ==0
5、模板上引用
<!DOCTYPE html>
<html lang="en">
{% load myFilters %}
<head>
....
<h2>自定义过滤器</h2>
{% if mylist.0|mod %}
偶数
{% else %}
非偶数
{% endif %}
{% if mylist.0|mod_val:mylist.1 %}
能被整除
{% endif %}
</body>
标签:mylist.0,自定义,过滤器,mydict,模板,mod 来源: https://blog.csdn.net/darling_user/article/details/100169549