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

for i = 1 to n

当前回答

{% for _ in ''|center:13 %}
    {{ forloop.counter }}
{% endfor %}

其他回答

为了防止其他人遇到这个问题,我创建了一个模板标签,可以创建一个范围(…):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

你不传递n本身,而是传递range(n)[包含从0到n-1的整数列表],从你的视图到你的模板,在后者中,你在range %}中为i执行{%(如果你绝对坚持以1为基础,而不是正常的以0为基础的索引,你可以使用forloop。循环体中的计数器;-)。

我使用了一种简单的技术,可以很好地处理没有特殊标记和附加上下文的小情况。有时这很有用

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

对于那些寻找简单答案的人来说,只需要显示一个数值的数量,比如从100个帖子中添加3个,例如添加{% For post in posts|slice:"3" %}并正常循环,只会添加3个帖子。

这需要一个范围函数。Django的一个特性票被提出了(https://code.djangoproject.com/ticket/13088),但关闭为“不会修复”以下的评论。

我对这个想法的印象是,它试图导致在模板中编程。如果您有一个需要呈现的选项列表,那么它们应该在视图中计算,而不是在模板中。如果这就像一个值范围那么简单,那就这样吧。

他们有一个很好的观点——模板应该是视图的非常简单的表示。您应该在视图中创建有限的必需数据,并将其传递给上下文中的模板。