Django 템플릿에서 수학 나머지를 사용하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1438486

  •  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 %}   
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top