模板语言内置的过滤器和标签比较少,往往会遇到无法满足需求的情况,所以需要我们来自定义。自定义filter和simple_tag在项目中很常用
a.首先检查settings下面INSTALLED_APPS有没有注册当前应用
b.然后在应用下面创建templatetags模块,我建一个templatetags包,建一个"任意名称".py文件
先写上下面这个固定格式的工厂函数(变量名也是固定的)
from django import template from django.utils.safestring import mark_safe register = template.Library() #register的名字是固定的,不可改变
然后自定义过滤器,自定义标签
from django import template from django.utils.safestring import mark_safe register = template.Library() #register的名字是固定的,不可改变 @register.filter def filter_multi(v1,v2): return v1 * v2 @register.simple_tag def simple_tag_multi(v1,v2): return v1 * v2 @register.simple_tag def my_input(id,arg): result = "<input type='text' id='%s' class='%s' />" %(id,arg,) return mark_safe(result)
c.在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py : 加上{% load my_tags %}
filter可以用在if等语句后,simple_tag不可以