Szukam sposobu na użycie czegoś takiego jak operator modułu w django. To, co próbuję zrobić, to dodać nazwę klasy do co czwartego elementu w pętli.
Z modułem wyglądałoby to tak:
{% 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 %}
Oczywiście to nie działa, ponieważ% to zastrzeżony znak. Czy jest inny sposób, aby to zrobić?
templatetag
znacznik, ale okładki{%
,%}
itp (nie%
).Odpowiedzi:
Potrzebujesz divisibleby , wbudowanego filtru django.
źródło
Nie możesz użyć operatora modulus w tagach szablonu Django, ale wystarczyłoby napisać filtr, aby to zrobić. Coś takiego powinno działać:
I wtedy:
Zamiast tego możesz nawet zrobić coś takiego:
I wtedy:
Lub możesz użyć
cycle
tagu:źródło
Wygląda na to, że powinieneś po prostu użyć tagu cyklu. Wbudowane tagi szablonów
źródło
Przykład ładowania wierszy i kolumn. Nowy rząd co 4 pozycje. Zamknij również ostatni wiersz, nawet jeśli jest mniej niż 4 elementy.
myapp / templatetags / my_tags.py
szablon html
źródło