Django 템플릿에서 수학 나머지를 사용하는 방법은 무엇입니까?
-
08-07-2019 - |
문제
각 4 가지 요소 후에 Li의 클래스 속성을 변경하고 싶습니다 (5, 9, 13 번째 LI 요소 클래스가 변경되어야 함).
아래와 같은 것을 시도했지만 구문 오류를주었습니다. 나머지를 구문 분석 할 수 없습니다 : 'forloop.counter%4'에서 '%4'
{% for p in plist %}
{% ifequal forloop.counter%4 1 %}
<li class="clear"> {{p.title}} </li>
{% else %}
<li> {{p.title}} </li>
{% endifequal %}
{% endfor %}
누군가 나에게 일하는 솔루션을 제안 해 주시면 감사하겠습니다.
해결책
Django 템플릿에서 그런 평가를 할 수 없습니다. ifequal 태그는 두 개의 매개 변수만을 기대하고 비교합니다. 일부 유형의 필터가 필요합니다.
그러나 대신 사이클 태그를 사용할 수 있습니다.
{% for p in plist %}
{% if forloop.first %}
<li> {{p.title}} </li>
{% else %}
<li{% cycle '' '' '' ' class="clear"' %}> {{p.title}} </li>
{% endif %}
{% endfor %}
편집 : 지적한 바와 같이, 원래 솔루션은 5 일 이후 4, 8 등을 지 웠습니다. Tolga의 변경 사항을 포함하도록 답을 업데이트했습니다.
다른 팁
Forloop.counter0 및 필터 분할을 사용할 수 있습니다.
{% ifequal forloop.counter0|divisibleby:"4" %}
논리는 복잡 할 것입니다 분할 필터가 도움이 될 수 있습니다.
당신은 그렇게하고 싶지 않습니다 - 그게 뭐야 cycle
입니다.
{% for p in plist %}
<li{% ifnotequal forloop.counter 1 %}{% cycle ' class="clear"' '' '' '' %}{% endifnotequal %}>{{p.title}</li>
{% endfor %}
이 예제는 5, 9, 13 일을 지 웁니다.
편집 : 모자 팁 @cpharmston.
나는 부트 스트랩 카드를 카드 데크 당 3으로 제한하려고 노력하면서 이것으로 조금 어려움을 겪었다.
이것은 Django 2.1 이상에서 작동하여 행을 3의 그룹으로 제한합니다.
{% ifequal forloop.counter|divisibleby:"3" True %}
제휴하지 않습니다 StackOverflow