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>

 

if 中调用自定义filter

如果 

num+30 大于30 输出successful
{% if num|myAddf2:30 > 30 %}
    <p>successful</p>
{% endif %}

 

posted on 2018-07-16 20:33  gaizhongfeng  阅读(326)  评论(0编辑  收藏  举报