我如何写一个数字循环在Django模板?我的意思是

for i = 1 to n

当前回答

也许像这样?

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

其他回答

不幸的是,Django模板语言不支持这一点。有一些建议,但它们看起来有点复杂。我只要在上下文中放一个变量:

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

在模板中:

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

你可以在views.py的上下文中传递range(n)而不是n。这将给你一个可迭代的列表。

context['range']= range(n)

然后你可以这样迭代你的模板:

{% for i in range %}
   <!-- your code -->
{% endfor %}

的绑定

{'n' : range(n) }

到模板,然后做

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

注意,您将得到基于0的行为(0,1,…)n - 1)。

(为兼容Python3而更新)

为了防止其他人遇到这个问题,我创建了一个模板标签,可以创建一个范围(…):http://www.djangosnippets.org/snippets/1926/

Accepts the same arguments as the 'range' builtin and creates a list containing
the result of 'range'.

Syntax:
    {% mkrange [start,] stop[, step] as context_name %}

For example:
    {% mkrange 5 10 2 as some_range %}
    {% for i in some_range %}
      {{ i }}: Something I want to repeat\n
    {% endfor %}

Produces:
    5: Something I want to repeat 
    7: Something I want to repeat 
    9: Something I want to repeat