前天学习inclusion_tag的使用,但是自己写代码的时候总是出错,直到今天才第一次运行成功,特地来写一下inclusion_tag的使用,以后出错可以看看。
使用inclusion_ta可以将组件变成动态的,以分页为例:
一.使用过程
1.创建文件
在Django的app下创建一个叫templatetags的python(名字一定要是templatetags)
然后创建一个py文件,来写我们自定义的inclusion_tag
2.写配置
from django import template
register = template.Library() #这是固定步骤,不能错
@register.inclusion_tag(filename="pagenation.html")
#filename中写的文件是inclusion_tag的参数要传入的文件
def pagenation(num):
return {"num":range(1,num+1)} #这里的传参与render有异曲同工之妙
3.配置组件
比如一个分页功能的组件
<nav aria-label="Page navigation" class="text-center">
<ul class="pagination">
<li>
<a href="#" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
{% for i in num %} #根据用户的传入的参数生成不同的页数
<li>
<a href="">{{ i }}</a>
</li>
{% endfor %}
<li>
<a href="#" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
4.引用标签
inclusion_tag会将装饰器中传入的那个文件作为返回值
比如我们在一个网页中想要用到
{% load my_tag %} #{% load 我们写inclusion_tag标签的文件名 %}
{% page 5 %} #{% 函数名 参数 %}
这样的话就会返回一个page为5的分页栏
结果如下:
二.流程图
inclusion_tag整个流程我们画图看一下:
三.注意事项
1.创建的文件名为templatetags,且是python包
2.引入装饰器(和自定义过滤器一样)
from django import template
register = template.Library()
3.写自定义的inclusion_tag函数,要有返回值
@register.inclusion_tag(filename="pagenation.html")
def pagenation(num):
return {"num":range(1,num+1)}
4.使用时,先引入,再使用
{% load py文件名 %}
{% 函数名 参数 %}