其他分享
首页 > 其他分享> > Django 模板语言(模板变量、模板标签)和模板过滤器(自定义过滤器)

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