使用自定义simple_tag

在 app01 下面创建 templatetags 文件夹,在创建 my_tag.py 文件,内容如下:

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

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

@register.simple_tag
def my_add100(v1):
    return v1 + 100

Django 模版语法 三

修改 login.html 文件

...
{% my_add100 4 %}

{% my_add 10 11 12 %}

修改 settings.py 文件

# 添加
            'libraries':{
                "my_tag":"app01.templatetags.my_tag",

位置如下
Django 模版语法 三

运行效果如下:
Django 模版语法 三

使用自定义 filter

修改 my_tag.py 文件

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

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

# filter 参数不能超过两个
@register.filter
def my_add100(v1, v2):
    return v1 + 100 + v2

# simple_tag 不能用于if 语句
@register.simple_tag
def my_add(v1,v2,v3):
    return v1 + v2 + v3

修改 login.html 文件

....
{{ num | my_add100:8 }}
...

修改 views.py 文件

........
def login(req):
    if req.method=="POST":
        return HttpResponse("ok")

    num = 100

    return render(req, "login.html", locals())

运行效果如下:
Django 模版语法 三

{% if %} 的使用

修改 login.html 文件

......
{% if num|my_add100:34 > 100 %}
    <p>大于100</p>
{% elif num|my_add100:34 < 100 %}
    <p>小于100</p>
{% else %}
    <p>等于100</p>
{% endif %}

Django 模版语法 三

总结:

simple_tag : 可以传多个参数, 不能用于 if for 语句
filter : 最多两个参数

相关文章:

  • 2022-12-23
  • 2021-12-01
  • 2021-05-30
  • 2021-09-13
  • 2021-09-29
  • 2021-11-27
  • 2022-01-09
  • 2022-02-15
猜你喜欢
  • 2022-12-23
  • 2021-10-07
  • 2021-06-30
  • 2021-05-25
  • 2021-08-01
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案