检查一个值是否等于Django模板中另一个数字的模数

时间:2016-02-20 20:55:17

标签: python django django-templates

我试图在Django中获得相同的效果

if idx % 3 == 2:做点什么

idx是forloop中的索引,但我已经简化了代码

我用过这个:

{% ifequal idx|divisibleby:3 2 %}
    do something
{% endifequal %}

似乎divisibleby过滤器返回True所以在获得模数后几乎不可能比较数字2。

3 个答案:

答案 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只会返回TrueFalse,因此除了建立自己的模板标记(如@sayse)之外,您还可以提供一组数字{{ 1}} x,然后在模板中进行比较,如下所示:

在您的观看次数x % 3 ==2

然后在你的模板中:

context['correct_numbers'] = { x for x in range(100) if x%3 ==2}