Django 模板语言(模板变量、模板标签)和模板过滤器(自定义过滤器)

Django 模板语言(模板变量、模板标签)和模板过滤器(自定义过滤器)_第1张图片
使用模板变量,.前面可能是一个字典,可能是一个对象,还可能是一个列表

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

使用字典属性:{
    { mydict.title }}
{ { mydict.book }}
使用列表属性:{ { mylist.1 }}

Django 模板语言(模板变量、模板标签)和模板过滤器(自定义过滤器)_第2张图片

逻辑运算:not and or

    {% for i in mylist %}
  • { { forloop.counter }}----------{ { i }}
  • {% endfor %}
{% if mylist.0 == mylist.1 %} 相等 {% elif mylist.0 >= mylist.1 %} 大于等于 {% else %} 最后 {% endif %}

Django 模板语言(模板变量、模板标签)和模板过滤器(自定义过滤器)_第3张图片
Django 模板语言(模板变量、模板标签)和模板过滤器(自定义过滤器)_第4张图片

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、模板上引用



{% load myFilters %}

....

自定义过滤器

{% if mylist.0|mod %} 偶数 {% else %} 非偶数 {% endif %} {% if mylist.0|mod_val:mylist.1 %} 能被整除 {% endif %}

你可能感兴趣的:(Django)