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

如何在模板中的数学表达式中使用django forloop.counter0?,django,django-templates,built-in,Django,Django Templates,Built In,我想在数学表达式中使用forloop.counter0。这就是我想到的: {% for category in categories %} <li class="wow fadeInUp" data-wow-delay="{{ forloop.counter0 * 0.1 }}s"> //whatever </li> {% endfor %} {%用于类别中的类别%} //随便 {%endfor%}

我想在数学表达式中使用
forloop.counter0
。这就是我想到的:

{% for category in categories %}
        <li class="wow fadeInUp" data-wow-delay="{{ forloop.counter0 * 0.1 }}s">
                //whatever
        </li>
{% endfor %}
{%用于类别中的类别%}
  • //随便
  • {%endfor%}
    我知道这是错误的原因:

    无法分析“forloop.counter0*0.1”中的其余部分:“*0.1”

    到底是为了解决这个问题吗


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

    可以使用
    widthratio
    标记来实现这一点,也可以使用自定义
    templatetag
    ,正如Mauricio在评论中所说,但是在
    widthratio
    中,最终值应该是一个数字,不能是浮点,所以这可能是个问题

    所以有第三种方法可以通过使用

    因此,对于乘法,您可以将其放入
    模板标记中

    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
    

    这里的
    arg
    不需要是
    int
    ,它也可以是
    浮点
    ,也不需要在模板中加载任何用于乘法的标记。

    是的,我误解了计数器。您不能在Django模板中进行乘法,因此可以使用自定义模板标记或使用
    widthratio
    标记来完成此操作