Django模板遍历列表
我在Django的视图中创建了一个列表:
list = [ elem1, elem2, ..., elemN ]
这个列表的长度是可变的:它可以包含0到6个元素。我想在模板中遍历这个列表,但我希望循环总是执行6次,对于不存在的元素返回None
或空字符串。
我试过类似这样的代码:
{% for i in "0123456" %}
{{ list.i }}
{% endfor %}
但显然这样不行。我知道我可以在视图中处理这个问题,但我想在模板中实现。这样做可能吗?
2 个回答
0
看看这个代码片段:模板范围过滤器
2
你可以加一个if语句,来检查这是不是你第六次循环。
{% for item in someList %}
{% if forloop.counter <= 6 %}
{{ item }}
{% endif %}
{% endfor %}
http://docs.djangoproject.com/en/1.3/ref/templates/builtins/#for 在文档里可以找到相关信息。
当然,如果你的列表很长,这样做就不是最优的选择。我建议你在views.py文件中处理这个列表,然后再把它传给模板。尽量把逻辑放在views里。
这样你就可以控制循环的次数。要完全解决你的问题,你可能还需要一些额外的逻辑,不过可以参考我上面提到的内容。