반응형
장고 템플릿의 계수 %
장고에서 모듈러스 연산자와 같은 것을 사용하는 방법을 찾고 있습니다. 내가하려는 것은 루프의 모든 네 번째 요소에 클래스 이름을 추가하는 것입니다.
모듈러스를 사용하면 다음과 같습니다.
{% 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 가 필요합니다 .
{% 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 템플릿 태그에는 모듈러스 연산자를 사용할 수 없지만 필터를 작성하기에 충분히 쉽습니다. 이와 같은 것이 작동해야합니다.
@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' '' '' '' %}">
사이클 태그를 사용해야하는 것처럼 들립니다. 내장 템플릿 태그
부트 스트랩 행 및 열 예 4 개 항목마다 새로운 행. 4 개 미만의 항목이 있어도 마지막 행을 닫습니다.
myapp / templatetags / my_tags.py
from django import template
register = template.Library()
@register.filter
def modulo(num, val):
return num % val
html 템플릿
{% load my_tags %}
{% for item in all_items %}
{% if forloop.counter|modulo:4 == 1 %}
<div class="row">
{% endif %}
<div class="col-sm-3">
{{ item }}
</div>
{% if forloop.last or forloop.counter|modulo:4 == 0 %}
</div>
{% endif %}
{% endfor %}
참고 URL : https://stackoverflow.com/questions/8494209/modulus-in-django-template
반응형
'program story' 카테고리의 다른 글
Rails의 단수 또는 복수 컨트롤러 및 헬퍼 이름 (0) | 2020.07.30 |
---|---|
RegExp의 exec () 함수와 String의 match () 함수의 차이점은 무엇입니까? (0) | 2020.07.30 |
const int vs. int const C ++ 및 C의 함수 매개 변수 (0) | 2020.07.29 |
edittext의 텍스트를 확인하는 방법은 전자 메일 주소입니까? (0) | 2020.07.29 |
HTML의 숨겨진 기능 (0) | 2020.07.29 |