Django 自定义tag 和 filter

Posted gaizhongfeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 自定义tag 和 filter相关的知识,希望对你有一定的参考价值。

 自定义tag 可以传递多个值,自定义filter最多值可以传递两个值

自定义filter 可以放在{% if %} 中,自定义tag 不可以

 

 

 

1.在  app 下新建一个package名字叫templatetags

技术分享图片

 

 

2.在templatetags下创建一个python 文件

技术分享图片

 

 

3. python中是自定义的代码

from django import  template
from  django.utils.safestring import  mark_safe


#register 是固定的变量名,不能改变
register = template.Library()


# 自定义tag 和 filter的不通之处只在于:
#     tag使用 @register.simple_tag 装饰器
#     filter使用 @register.filter 装饰器



@register.simple_tag
def myAdd(n):
    return n+200

@register.simple_tag
def myAdd2(n1,n2,n3):
    return n1+200+n2+n3

@register.filter
def myAddf(n):
    return n+100

@register.filter
def myAddf2(n1,n2):
    return n1+100+n2

 

 

4. 在html中使用自定义的tag 和filter

 

{% load myTag %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>t8</title>
</head>
<body>
    <h1>template</h1>

{#    在HTML中使用{% load myTag %} 来引入自定义的文件#}
{#调用自定义tag#}
    {%  myAdd num %}
   {%  myAdd2 num 100 20 %}


{#    调用自定义filter#}
    {{  num | myAddf}}
{#    向自定义filter中传递两个参数#}
    {{  num | myAddf2:100}}


</body>
</html>

 

以上是关于Django 自定义tag 和 filter的主要内容,如果未能解决你的问题,请参考以下文章

自定义django模板的 tags和filters

Django(模板语言-自定义filter和simple_tag)

Django(模板语言-自定义filter和simple_tag)

django-自定义过滤器(simple_tag和filter)

18)django-模板的过滤器和tag,自定义simple_tag和filter

simple_tag | filter 对比