다음과 같이하고 싶습니다.
변수 p는 목록 [ 'a', 'b', 'c', 'd'] 인 test.py에서 가져온 것입니다.
{% for i in p %}
{{variable++}}
{{variable}}
결과 출력 :
1 2 3 4
다음과 같이하고 싶습니다.
변수 p는 목록 [ 'a', 'b', 'c', 'd'] 인 test.py에서 가져온 것입니다.
{% for i in p %}
{{variable++}}
{{variable}}
결과 출력 :
1 2 3 4
답변:
다음을 사용할 수 있습니다 loop.index
.
{% for i in p %}
{{ loop.index }}
{% endfor %}
템플릿 디자이너 문서를 확인하십시오 .
최신 버전에서는 범위 지정 규칙으로 인해 다음이 작동 하지 않습니다 .
{% set count = 1 %}
{% for i in p %}
{{ count }}
{% set count = count + 1 %}
{% endfor %}
2.10 이후에는 범위 문제를 해결하기 위해 다음과 같이 할 수 있습니다.
{% set count = namespace(value=0) %}
{% for i in p %}
{{ count.value }}
{% set count.value = count.value + 1 %}
{% endfor %}
Jeroen은 범위 지정 문제가 있다고 말했듯이 루프 외부에서 'count'를 설정하면 루프 내부에서 수정할 수 없습니다.
'count'에 스칼라가 아닌 객체를 사용하여이 동작을 무효화 할 수 있습니다.
{% set count = [1] %}
이제 forloop 또는 % include % 내에서 count를 조작 할 수 있습니다. 카운트를 늘리는 방법은 다음과 같습니다 (예, 엉성하지만 오 잘).
{% if count.append(count.pop() + 1) %}{% endif %} {# increment count by 1 #}
{% set count = [] %}
모든 루프의 목록에 항목을 추가 {% set __ = index.append(1) %}
하고 길이를 사용하여 색인을 표시하는 것입니다 index|length
.
{% set count = [ ] %}
모든 루프의 목록에 항목을 추가 {% set __ = count.append(1) %}
하고 길이를 사용하여 개수를 표시하는 것입니다.count|length
내 해결책은 다음과 같습니다.
모든 카운터를 사전에 넣으십시오.
{% set counter = {
'counter1': 0,
'counter2': 0,
'etc': 0,
} %}
쉽게 증가시킬 매크로를 정의하십시오.
{% macro increment(dct, key, inc=1)%}
{% if dct.update({key: dct[key] + inc}) %} {% endif %}
{% endmacro %}
이제 'counter1'카운터를 증가 시키려면 다음을 수행하십시오.
{{ increment(counter, 'counter1') }}
저도이 행동으로 고생했습니다. 카운터를 기반으로 jinja에서 div 클래스를 변경하고 싶었습니다. 비단뱀 방식이 작동하지 않는다는 사실에 놀랐습니다. 다음 코드는 각 반복에서 카운터를 재설정했기 때문에 빨간색 클래스 만있었습니다.
{% if sloupec3: %}
{% set counter = 1 %}
{% for row in sloupec3: %}
{% if counter == 3 %}
{% set counter = 1 %}
{% endif %}
{% if counter == 1: %}
<div class="red"> some red div </div>
{% endif %}
{% if counter == 2: %}
<div class="gray"> some gray div </div>
{% endif %}
{% set counter = counter + 1 %}
{% endfor %}
{% endif %}
나는 이것과 같이 loop.index를 사용했고 그것은 작동한다 :
{% if sloupec3: %}
{% for row in sloupec3: %}
{% if loop.index % 2 == 1: %}
<div class="red"> some red div </div>
{% endif %}
{% if loop.index % 2 == 0: %}
<div class="gray"> some gray div </div>
{% endif %}
{% endfor %}
{% endif %}
이 작업을 수행하는 Django의 방법을 찾고이 게시물을 찾았습니다. 아마도 다른 누군가가 여기에 오는 django 솔루션이 필요할 것입니다.
{% for item in item_list %}
{{ forloop.counter }} {# starting index 1 #}
{{ forloop.counter0 }} {# starting index 0 #}
{# do your stuff #}
{% endfor %}
자세한 내용은 https://docs.djangoproject.com/en/1.11/ref/templates/builtins/에서 확인하세요.