我在Django视图中创建了一个列表:
list = [ elem1, elem2, ..., elemN ]
列表是可变长度的:它可以包含0-6个元素。我想迭代模板中的列表,但我希望循环总是运行6次,对于不存在的元素产生None
或空字符串。
我试过这样的事情:
{% for i in "0123456" %}
{{ list.i }}
{% endfor %}
但这显然不起作用。我知道我可以在视图中执行此操作,但我希望在模板中具有此功能。有可能吗?
答案 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