检查某个值是否等于Django temp中另一个数的模

2024-04-20 15:21:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Django找到一个类似的例子

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

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

我用了这个:

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

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


Tags: django代码true过滤器if数字dosomething
3条回答

你说得对,divisbleby只返回TrueFalse,所以除了像@sayse建议的那样构建自己的模板标记之外,还可以提供一组数字x,其中x % 3 ==2,然后在模板中进行如下比较:

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

然后在模板中:

{% if idx in correct_numbers %}
    do something
{% endif %}

DivisibleBy只做一个模运算来检查最终值是否等于0,没有任何东西可以阻止您使用完全相同的代码制作自己的模板标记,而不进行最终检查

@register.filter(is_safe=False)
def modulo(value, arg):
    return int(value) % int(arg)


{% ifequal idx|modulo:3 2 %}

idx % 3 == 2如果(idx - 2) % 3 == 0

因此

{% if idx | add:-2 | divisibleby:3 %}
    do something
{% endif %}

我想应该做你想做的事。在

相关问题 更多 >