如何在模板的数学表达式中使用django forloop.counter0?

时间:2018-06-24 20:10:41

标签: django django-templates built-in

我想在数学表达式中使用django built-in template tag forloop.counter0。这是我想出的:

{% for category in categories %}
        <li class="wow fadeInUp" data-wow-delay="{{ forloop.counter0 * 0.1 }}s">
                //whatever
        </li>
{% endfor %}

我得知这是错误的错误原因:

  

无法解析其余部分:'forloop.counter0 * 0.1'中的'* 0.1'

是否可以解决此问题?

反正我不可以在数学表达式中使用内置函数吗?

1 个答案:

答案 0 :(得分:1)

一个人可以使用widthratio标签来实现此目的,也可以使用自定义templatetag,如Mauricio的评论中所述,但在widthratio中,最终值应为 number ,并且不能为 float ,因此可能有问题。

因此,有第三种方法可以使用template-filters

要进行乘法运算,可以将其放入templatetags

from django import template
register = template.Library()

@register.filter(is_safe=False)
def multiply(value, arg):
    """Multiply the arg to the value."""
    try:
        return float(value) * float(arg)
    except (ValueError, TypeError):
        try:
            return value * arg
        except Exception:
            return ''

并在

之类的模板中使用它
{{ forloop.counter0|multiply:'0.1' }}

{{ '0.002'|multiply:'0.21' }}  # Output : 0.00042

这里valuearg不一定是int,也可以是float,也不需要在模板中加载任何用于乘法的标记。 / p>