Django模板有划分过滤器吗?

时间:2011-12-09 15:42:17

标签: python django

我注意到内置add过滤器,但我找不到divide

我是Django的新手,不确定是否有这样的过滤器。

6 个答案:

答案 0 :(得分:58)

没有它。但如果你是一个小黑客......

http://slacy.com/blog/2010/07/using-djangos-widthratio-template-tag-for-multiplication-division/

  

计算A * B:{%widthratio A 1 B%}

     

计算A / B:{%widthratio A B 1%}

     

计算A ^ 2:{%widthratio A 1 A%}

     

计算(A + B)^ 2:{%widthratio A | add:B 1 A | add:B%}

     

计算(A + B)*(C + D):{%widthratio A | add:B 1 C | add:D%}

您也可以在2分钟内创建一个分割过滤器

答案 1 :(得分:20)

使用自定义过滤器:

register = template.Library()

@register.filter
def divide(value, arg):
    try:
        return int(value) / int(arg)
    except (ValueError, ZeroDivisionError):
        return None

答案 2 :(得分:4)

我会使用自定义模板,但如果您不想,可以使用内置标签的widthratio,

{% widthratio request.session.get_expiry_age 3600 1 %} 

另一个例子

{% widthratio value 1150000 100 %}

语法:

{% widthratio parm1 parm2 parm3 %}

所以基本上它用于缩放图像,但你可以用它来划分。它的作用是:parm1 / parm2 * parm3。

希望这会有所帮助,更多关于widthratio here

答案 3 :(得分:4)

有一个Python模块可以在模板中进行数学运算:Django-Mathfilters

它包含add,如你所说,还div除以:

 8 / 3 = {{ 8|div:3 }}

答案 4 :(得分:3)

查看http://djangosnippets.org/snippets/2424/

希望能帮到你。

答案 5 :(得分:2)

您可以使用divisibleby

  

如果该值可被参数整除,则返回True。

     

例如:

     

{{ value|divisibleby:"3" }}

     

如果value为21,则输出为True。

您还可以看到django docs