我想在数学表达式中使用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'
是否可以解决此问题?
反正我不可以在数学表达式中使用内置函数吗?
答案 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
这里value
和arg
不一定是int
,也可以是float
,也不需要在模板中加载任何用于乘法的标记。 / p>