使用Django的ifchanged模板标签和forloop.counter

时间:2011-06-06 20:28:53

标签: django

Django的模板标签包含一个{% ifchanged %}测试,用于在循环中使用以检查值是否已更改。每次变量发生变化时,我都会使用它来输出新的<div>标记。

我希望每个第4个<div>都有一个特定的类,但是Django的forloop.counter变量在这里没有用,因为每次循环运行它都会递增,即使{% ifchanged %}测试没有不运行,所以输出不规律。

有没有人知道解决这个问题的方法?显然我不能在Django视图中设置我自己的计数器,所以我无法检查'内部'循环何时发生了变化。

谢谢, 马特

1 个答案:

答案 0 :(得分:3)

您只需使用divisibleby过滤器:

即可
{% if forloop.counter|divisibleby:"4" %}
   ....
{% endif %}

更新

您必须在模板中使用计数器+ divisibleby过滤器。看看这个模板标签:Counter,它可以帮到你。

或者

在将视图传递给模板并使用divisibleby过滤器之前,在视图中过滤掉重复的项目(如果可能)。