django 模板自定义过滤器

django自带的模板过滤器有很多,但是基础运算的只有加法,如果需要做减法的话只能用

{{value|add:-10}} 

我在实际操作中需要对两个变量进行减法,经尝试

{{value1|add:-value2}}

这样写是无效的。于是我就准备自己定义一个过滤器来完成减法。

参考:官方文档

结构如下

polls/
    __init__.py
    models.py
    templatetags/
        __init__.py
        poll_extras.py
    views.py

在应用下添加一个templatetags文件夹,并在文件夹下添加__init__.py文件。然后新建poll_extras.py

from django import template

register = template.Library()


@register.filter(name='minus')
def minus(value1, value2):
    try:
        value = value2 - value1
    except:
        value = None
    return value

定义了minus函数,并且注册。

在html文件开头,引用

{% load poll_extras %}

在需要使用过滤器的地方使用minus过滤器

{{i.amount2|minus:amount1}}

这样就可以计算amount2 减去 amount1 的值了


附:django还是更支持在views里完成计算的,这里只是提出个解决方法。



你可能感兴趣的:(django)