15

从技术上讲,它应该从 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 %}

这目前什么都不输出:(如果我用 0...{{c.0.0.from_user}} 替换“i”...它将输出一些东西..(第一个用户 10 次)

4

3 回答 3

27

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

<div id="right_pod">
{% for i in c %}
    <div class="user_pod">
        {{ i.0.from_user }}
    </div>
{% endfor %}
于 2009-04-24T00:51:21.950 回答
15

请阅读模板语言 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)
于 2009-04-25T01:25:13.000 回答
9

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

像这样遍历对象(在本例中为 c):

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

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

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

于 2009-04-24T17:37:56.337 回答