我知道怎么做一个forloop从列表中获取对象但是在这里我说的是forloop以便重复某些次数。就像在PHP中我会这样做:
for (i=0; i < 10; i++) {
hello <br />
}
这将输出你好10次。那么如何在django模板语言中做到这一点?
答案 0 :(得分:10)
Django模板语言有For循环。参见:
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for
....你可能会注意到你所追求的那种“重复”功能没有明确的镜头。例如,您可以在视图中定义一个int(在您的情况下为i)并将其范围传递到模板上下文中,然后遍历该int的范围(当然,在Python中,int对象本身不可迭代)
然而,更多'pythonic'方法是明确的:问问自己,“为什么我要迭代十次?”这个页面上显示的椰子数量是关于携带它们的勇敢的燕子吗?如果是这样,不要遍历数字10 - 而是直接遍历椰子对象列表,并在forloop中执行您的表示逻辑。
{% for coconut in coconuts %}
hello, {{forloop.counter}} {# Something useful about the coconut goes here. #}
{% endfor %}
假设有十个椰子,这将产生与您的示例相同的结果。但是,正如我在评论中指出的那样,你可以在循环中对椰子对象做一些更有用的事情。
如果你真的,绝对觉得你需要循环一个静态范围而不从业务逻辑中传入它,你可能会发现这个片段很有用:
http://djangosnippets.org/snippets/1899/
同样,我要提醒您确保您正在做您真正想做的事情,而不仅仅是巩固您知识管理的深层次。
答案 1 :(得分:2)
您可以使用custom filter轻松完成此操作:
from django.template import Library
register = Library()
@register.filter
def range(value):
return xrange(value)
然后在你的模板中:
{% for i in 10|range %}
hello <br/>
{% endfor %}
答案 2 :(得分:0)
这可以通过实现自己的模板标记来重复某些块来实现。看一下官方文档 https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
这样你可以通过写:
来使用它{% repeat 3 %}
<div>html to repeat</div>
{% endrepeat %}
这是2009年的一个旧片段,它完成上述操作,虽然可能需要更新才能使用Django 1.3,但应该足以让你开始: http://djangosnippets.org/snippets/1499/