Python Django模板:迭代列表

时间:2009-04-24 00:35:15

标签: python django django-templates

从技术上讲,它应该从0迭代到rangeLength输出c [i] [0] .from_user的用户名...但是从在线示例看,它们似乎用点符号替换括号。我有以下代码:

<div id="right_pod">
{%for i in rangeLength%}
    <div class="user_pod" >
        {{c.i.0.from_user}}
    </div>
{% endfor %}

这当前没有输出任何内容:(如果我将“i”替换为0 ... {{c.0.0.from_user}} ...它将输出一些东西..(第一个用户10次)

3 个答案:

答案 0 :(得分:19)

您需要i作为索引吗?如果没有,请查看以下代码是否符合您的要求:

<div id="right_pod">
{% for i in c %}
    <div class="user_pod">
        {{ i.0.from_user }}
    </div>
{% endfor %}

答案 1 :(得分:14)

请阅读整个documentation on the template language's for loops。首先,迭代(如在Python中)是对象而不是索引。其次,在任何for循环中都有一个forloop变量,它有两个你会感兴趣的字段:

Variable            Description
forloop.counter     The current iteration of the loop (1-indexed)
forloop.counter0    The current iteration of the loop (0-indexed)

答案 2 :(得分:8)

您应该使用切片模板过滤器来实现您的目标:

迭代对象(在本例中为c),如下所示:

{% for c in objects|slice:":30" %}

这将确保您只迭代前30个对象。

此外,您可以使用forloop.counter对象来跟踪您正在进行的循环迭代。