我试图在Django中获得相同的效果
if idx % 3 == 2:
做点什么
idx是forloop中的索引,但我已经简化了代码
我用过这个:
{% ifequal idx|divisibleby:3 2 %}
do something
{% endifequal %}
似乎divisibleby
过滤器返回True
所以在获得模数后几乎不可能比较数字2。
答案 0 :(得分:5)
DivisibleBy只是做一个模数来检查最终值是否等于0,没有任何东西阻止你使用完全相同的代码制作自己的模板标签而没有最后的检查
@register.filter(is_safe=False)
def modulo(value, arg):
return int(value) % int(arg)
{% ifequal idx|modulo:3 2 %}
答案 1 :(得分:3)
idx % 3 == 2
完全是(idx - 2) % 3 == 0
因此
{% if idx | add:-2 | divisibleby:3 %}
do something
{% endif %}
我应该做你想做的事。
答案 2 :(得分:1)
您更正了,divisbleby
只会返回True
或False
,因此除了建立自己的模板标记(如@sayse)之外,您还可以提供一组数字{{ 1}} x
,然后在模板中进行比较,如下所示:
在您的观看次数x % 3 ==2
然后在你的模板中:
context['correct_numbers'] = { x for x in range(100) if x%3 ==2}