django 自定义标签和过滤器和inclusion_tag
django 自定义标签和过滤器和inclusion_tag
自定义过滤器(至多传两个参数,若更多用元组)
1.在django的应用app文件夹下新建一个py包命名为 templatetags 一定要这个名字

2.templatetas 下新建一个py文件,这里我们要新建一个名字叫myAdd 的过滤器,建立一个myFilter.py文件
from django import template register = template.Library() # 实现了对v1+v2 v1为原参数,v2为过滤器后的参数 @register.filter() def myAdd(v1,v2): return v1+v2
3.使用:在需要应用的html 文件下:
{% load myFilter %}
{{ '大壮'|myAdd:'傻子' }}
自定义标签(参数数量不限)
1.同上
2.在使用上面的myFilter.py新建一个标签方法如下:
# 自定义标签 @register.simple_tag() def myTag(v1,v2,v3): return v1+v2+v3
3.对应的html 中:
{% load myFilter %}
{% myTag 1 2 3 %}
inclusion_tag(组件化开发一种方法)
1.在templates 下的目录新建一个所需要的模板html 文件,我这里在templates/app01的目录下

文件内容为:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> {% for i in data %} <li>{{ i }}</li> {% endfor %} </head> <body> </body> </html>
可以看到,我们使用了一个data 类型的变量,其余就是一个普通的html页面
2.在使用上面的myFilter.py新建一个inclusion_tag方法如下:
# inclusion_tag
@register.inclusion_tag("app01/inclusionTag.html")
def myInclude(data):
# return {'data':[11,22,33]}
return {'data': data}
这个标签链接了刚刚的html 文件,并返回一个data 信息
3.要引入的页面中,
{% load myFilter %}
{% myInclude '12345' %}
大三党,大家有问题可以多多建议
浙公网安备 33010602011771号