Django模板之自定义过滤器,标签,inclusion_tag
作者:互联网
Django模板之自定义过滤器,标签,inclusion_tag
在Django的模板语法中,我们可以使用Django定义好的过滤器、标签、inclusion_tag,
同时我们也可以使用自定义的过滤器、标签以及inclusion_tag,
那么我们如何自定义过滤器、标签、inclusion_tag呢?
自定义的前期准备的三个步骤:
1.在应用下创建一个名字“必须”叫templatetags的文件夹,
2.在该文件夹内创建“任意”名称的py文件,例如:mytag.py
3.在该py文件内"必须"先书写下面两句话(单词一个都不能错)
1 # mytag.py 2 # 在该py文件中输入以下两行代码 3 from django import template 4 register = template.Library()
接下来我们就可以进行自定义标签、过滤器、inclusion_tag了,我们演示就暂时在mytag.py文件下直接演示,如果在views.py文件夹下使用,需要在views.py文件中导入该模块;
自定义过滤器、标签和inclusion_tag:
1 # 自定义过滤器 2 @register.filter(name='baby') # 如果不取name的名字就会用my_sum作为过滤器名字 3 def my_sum(v1, v2): 4 return v1 + v2 5 # 使用 6 {% load mytag %} 7 <p>{{ n|baby:666 }}</p> # baby就是我们自定义过滤器的名字 8 9 10 11 # 自定义标签(参数可以有多个) 类似于自定义函数 12 @register.simple_tag(name='plus') 13 def index(a,b,c,d): 14 return '%s-%s-%s-%s'%(a,b,c,d) 15 # 使用 16 标签多个参数彼此之间空格隔开 17 <p>{% plus 'yesir' 123 123 123 %}</p> 18 19 20 # 自定义inclusion_tag 21 """ 22 内部原理 23 先定义一个方法 24 在页面上调用该方法 并且可以传值 25 该方法会生成一些数据然后传递给一个html页面 26 之后将渲染好的结果放到调用的位置 27 """ 28 @register.inclusion_tag('left_menu.html') 29 def left(n): 30 data = ['第{}项'.format(i) for i in range(n)] 31 # 第一种 32 # return {'data':data} # 将data传递给left_menu.html 33 # 第二种 34 return locals() # 将data传递给left_menu.html 35 # left_menu.html: 36 <ul> 37 {% for foo in data %} 38 <li>{{ foo }}</li> 39 {% endfor %} 40 </ul> 41 42 # index.html前端页面: 43 {% left 5 %} 44 # 总结:当html页面某一个地方的页面需要传参数才能够动态的渲染出来,并且在多个页面上都需要使用到该局部 那么就考虑将该局部页面做成inclusion_tag形式
标签:自定义,inclusion,py,html,Django,tag,过滤器 来源: https://www.cnblogs.com/yesirya/p/16023782.html