django - 如何在模板的数学表达式中使用 django forloop.counter0?
问题描述
我想在数学表达式中使用django 内置模板标签。 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”
无论如何要解决这个问题吗?
无论如何我不能在数学表达式中使用内置函数吗?
解决方案
可以使用widthratio
tag 来实现这一点,也可以使用 custom templatetag
,如 Mauricio 评论中所述,但widthratio
最终值应该是数字,不能是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
,也不需要在模板中加载任何标签进行乘法运算。
推荐阅读
- c++ - 有人可以解释这条正则表达式行的含义吗?
- sql-server - Django:迁移时“settings.DATABASES 配置不正确”,但可以通过 ORM 访问数据库
- c++ - 如何结交本地班级的功能朋友?
- python - 如何从 .vcf 文件中删除错误的制表符/新行?
- scala - Scala中的递归排序,包括退出条件
- android - 按下按钮时如何继续添加?
- javascript - onclick 我想获取 tr 元素,但它给了我 td 元素
- regex - 如何在多个捕获组中使用前瞻和后瞻
- sql - 生成租金列表,其中包含租金最多的店铺的客户信息
- r - 如何在 R 中自己在 ggplot 中编写显着性水平?