自定义过滤器,标签,inclusion_tag


自定义过滤器,标签,inclusion_tag

自定义过滤器,形参做多两个

三个必须

  1. 在应用下创建一个名字"必须"叫templatetags文件夹
  2. 在该文件夹内创建"任意"名称的py文件 如 : mytag.py
  3. 在该py文件内"必须"先书写以下两句话(一个子都不能错)
		from django import template
		
		register = template.Library()

现在开始自定义过滤器

# 后端
@register.filter(name='baby')
def my_sum(v1, v2):
    return v1 + v2
# 前端
{% load mytag %}

{{ n|baby:666 }}

自定义标签(参数可以有多个) 类似于自定义函数

@register.simple_tag(name='plus')
def index(a,b,c,d):
    return '%s-%s-%s-%s'%(a,b,c,d)
# 使用
标签多个参数彼此之间空格隔开

{% plus 'jason' 123 123 123 %}

# 输出 jason-123-123-123

inclusion_tag

内部原理:现在views.py定义一个方法,再定一个页面并调用方法,并且可以传值,该方法会生成一些数据然后传递给html页面,再将渲染好的结果放到调用的位置。

@register.inclusion_tag('lift.html')
def left(n):
    data = ['第{}项'.format(i) for i in range(n)] # 列表生成式
    # 将data传递给'lift.html'
    # 第一种方式
    return {'data':data}
    # 第二种方式 
    return locals()
    {% for datum in data %}
  • {{ datum }}
  • {% endfor %}

{% load mytag %}

{% left 10 %}

当HTML页面某一个地方需要传参数才能够动态的渲染,并且在多个页面上都需要使用到该局部,就可考虑该局部页面改为inclusion_tag