Django模板迭代列表

时间:2011-04-12 14:36:53

标签: python django templates

我在Django视图中创建了一个列表:

list = [ elem1, elem2, ..., elemN ]

列表是可变长度的:它可以包含0-6个元素。我想迭代模板中的列表,但我希望循环总是运行6次,对于不存在的元素产生None或空字符串。

我试过这样的事情:

{% for i in "0123456" %}
    {{ list.i }}
{% endfor %}

但这显然不起作用。我知道我可以在视图中执行此操作,但我希望在模板中具有此功能。有可能吗?

2 个答案:

答案 0 :(得分:2)

你可以添加一个if语句,检查它是否是你第6次循环。

{% for item in someList %}
{% if forloop.counter <= 6 %}
{{ item }}
{% endif %}
{% endfor %}
文档中的

http://docs.djangoproject.com/en/1.3/ref/templates/builtins/#for。 当然,如果你的清单很长,那么这不是最佳选择。我还建议处理views.py中的列表,然后将其传递给模板。如果可能,逻辑应保留在视图中。

这使您可以控制完成的循环次数。要完全解决您的问题,您需要一些附加逻辑,但请参阅上面有关此内容的说明。

答案 1 :(得分:0)

选中此代码段:Template range filter