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 %}
물론 %는 예약된 문자이기 때문에 작동하지 않습니다.이것을 할 수 있는 다른 방법이 있습니까?
당신은 내장된 장고 필터인 디바이블바이가 필요합니다.
{% 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개 미만인 경우에도 마지막 행을 닫습니다.
내 앱/내 앱 태그/내 앱/내 앱.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
'programing' 카테고리의 다른 글
플렉스 항목이 컨테이너를 초과하지 않도록 방지 (0) | 2023.08.05 |
---|---|
목록 보기용 사용자 지정 어댑터 (0) | 2023.08.05 |
스위프트에서 문자열을 부동으로 변환 (0) | 2023.08.05 |
작은 목록보다 작은 문자열에 대해 반복하는 것이 느린 이유는 무엇입니까? (0) | 2023.08.05 |
요청한 항목을 찾을 수 없습니다.Visual Studio 2010 Professional의 Net Framework 데이터 공급자 (0) | 2023.08.05 |