Django模板遍历列表

1 投票
2 回答
8925 浏览
提问于 2025-04-16 15:35

我在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里。

这样你就可以控制循环的次数。要完全解决你的问题,你可能还需要一些额外的逻辑,不过可以参考我上面提到的内容。

撰写回答