[django] Django 템플릿의 숫자 for 루프

forDjango 템플릿에서 숫자 루프를 작성하려면 어떻게합니까 ? 나는 같은 것을 의미한다

for i = 1 to n



답변

특별한 태그와 추가 컨텍스트가없는 작은 경우에 잘 작동하는 간단한 기술을 사용했습니다. 때때로 이것은 편리합니다

{% for i in '0123456789'|make_list %}
    {{ forloop.counter }}
{% endfor %}


답변

{% with ''|center:n as range %}
{% for _ in range %}
    {{ forloop.counter }}
{% endfor %}
{% endwith %}


답변

불행히도 Django 템플릿 언어 에서는 지원되지 않습니다 . 거기에있는 몇 가지제안 하지만, 조금 복잡한 것 같다. 컨텍스트에 변수를 넣을 것입니다.

...
render_to_response('foo.html', {..., 'range': range(10), ...}, ...)
...

그리고 템플릿에서 :

{% for i in range %}
     ...
{% endfor %}


답변

이 문제에 대한 나의 생각은 가장 좋다고 생각합니다. templatetags 디렉토리에 my_filters.py를 유지합니다.

@register.filter(name='times')
def times(number):
    return range(number)

그리고 당신은 다음과 같이 사용할 것입니다 :

{% load my_filters %}
{% for i in 15|times %}
    <li>Item</li>
{% endfor %}


답변

어쩌면 이렇게?

{% for i in "x"|rjust:"100" %}
...
{% endfor %}


답변

바인딩을 전달할 수 있습니다

{'n' : range(n) }

템플릿으로 이동 한 다음

{% for i in n %}
...
{% endfor %}

0 기반 동작 (0, 1, … n-1)이 나타납니다.

(Python3 호환성을 위해 업데이트 됨)


답변

n자신을 전달하지 않고 range(n)[0에서 n-1까지의 정수 목록 포함] 뷰에서 템플릿으로 전달하고 후자에서 수행합니다 {% for i in therange %}(일반적으로 0이 아닌 1을 기본으로 고집하는 경우) forloop.counter루프 본문에서 사용할 수있는 기반 인덱스 ;-).