我如何写一个数字循环在Django模板?我的意思是
for i = 1 to n
我如何写一个数字循环在Django模板?我的意思是
for i = 1 to n
当前回答
{% with ''|center:n as range %}
{% for _ in range %}
{{ forloop.counter }}
{% endfor %}
{% endwith %}
其他回答
也许像这样?
{% for i in "x"|rjust:"100" %}
...
{% endfor %}
的绑定
{'n' : range(n) }
到模板,然后做
{% for i in n %}
...
{% endfor %}
注意,您将得到基于0的行为(0,1,…)n - 1)。
(为兼容Python3而更新)
不幸的是,Django模板语言不支持这一点。有一些建议,但它们看起来有点复杂。我只要在上下文中放一个变量:
...
render_to_response('foo.html', {..., 'range': range(10), ...}, ...)
...
在模板中:
{% for i in range %}
...
{% endfor %}
我对这个问题的看法,我认为是最蟒蛇的。在你的apps 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 '0123456789'|make_list %}
{{ forloop.counter }}
{% endfor %}