Django自定义模板标签和过滤器

inclusion_tag()

在app中新建一个templatetags包(名字固定,不能变,只能是这个),
和views.py、models.py等文件处于同一级别目录下。
这是一个包!不要忘记创建__init__.py文件以使得该目录可以作为Python的包

1.首先,编写Python函数,templatetags/my_tags.py

from django import template

register = template.Library()
register = Library()
# 调用Library对象的inclusion_tag()装饰器方法创建并注册Inclusion标签 
@register.inclusion_tag("stark/form.html")     
# 接收一个form参数 return数据给装饰器内的前端页面
def get_form(form):                                        
    ...
    ...
    return {"form":form}

2.接下来,创建用于标签渲染的模板stark/form.html

<ul>
{% for i in form%}
    <li> {{ i }} </li>
{% endfor %}
</ul>

3.带数据模板的使用方法

{% load my_tags %}
...
{% get_form form %}

流程:
步骤3中的前端接收一个form 并将form传给前面的get_form作为参数
函数运行完又生产一个form传递给装饰器内的前端页面展示

参考资料:自定义标签

posted @ 2018-03-22 20:46  iYouYue  阅读(230)  评论(1编辑  收藏  举报