Django模板中的模量%
我正在寻找一种方式来使用类似django中的模数运算符。 我正在试图做的是给循环中的每个第四个元素添加一个类名。
与模数它看起来像这样:
{% for p in posts %} <div class="post width1 height2 column {% if forloop.counter0 % 4 == 0 %}first{% endif %}}"> <div class="preview"> </div> <div class="overlay"> </div> <h2>p.title</h2> </div> {% endfor %}
当然这不起作用,因为%是一个保留字符。 有没有其他方法可以做到这一点?
你需要divisibleby ,一个内置的Djangofilter。
{% for p in posts %} <div class="post width1 height2 column {% if forloop.counter0|divisibleby:4 %}first{% endif %}"> <div class="preview"> </div> <div class="overlay"> </div> <h2>p.title</h2> </div> {% endfor %}
你不能在Django模板标签中使用模数运算符,但是编写一个filter就足够简单了。 像这样的东西应该工作:
@register.filter def modulo(num, val): return num % val
接着:
{% ifequal forloop.counter0|modulo:4 0 %}
你甚至可以做这样的事情,而不是:
@register.filter def modulo(num, val): return num % val == 0
接着:
{% if forloop.counter0|modulo:4 %}
或者你可以使用cycle
标签:
<div class="post width1 height2 column {% cycle 'first' '' '' '' %}">
这听起来像你应该只使用循环标签。 内置模板标签