如何在模板中的数学表达式中使用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
标记来完成此操作