Шаблон Python Django: перебирать список - PullRequest
10 голосов
/ 24 апреля 2009

Технически это должно повторяться от 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 ]

19 голосов
/ 24 апреля 2009

Вам нужно i, чтобы быть индексом? Если нет, посмотрите, выполняет ли следующий код то, что вам нужно:

<div id="right_pod">
{% for i in c %}
    <div class="user_pod">
        {{ i.0.from_user }}
    </div>
{% endfor %}
14 голосов
/ 25 апреля 2009

Пожалуйста, прочитайте всю документацию на языке шаблонов для циклов . Прежде всего, эта итерация (как в 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)
8 голосов
/ 24 апреля 2009

Вы должны использовать фильтр шаблона среза, чтобы достичь желаемого:

Перебрать объект (c в данном случае) следующим образом:

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

Это обеспечит итерацию только для первых 30 объектов.

Кроме того, вы можете использовать объект forloop.counter, чтобы отслеживать, в какой итерации цикла вы находитесь.

...