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' %}

 

posted @ 2020-08-12 23:09  Sunny抹茶  阅读(170)  评论(0)    收藏  举报