Непонимание тега цикла в Django

Я не уверен, обнаружил ли я ошибку, неправильно ли настроил свою систему или просто неправильно понимаю тег шаблона {% cycle %} в Django.

В руководстве приведен следующий пример кода:

{% cycle 'row1' 'row2' as rowcolors silent %}{# no value here #}
{% for o in some_list %}
    <tr class="{% cycle rowcolors %}">{# first value will be "row1" #}
        ...
    </tr>
{% endfor %}

Там ясно сказано, что первое объявление цикла ничего не выведет, а последующий вызов будет первой итерацией.

У меня возникают следующие проблемы: во-первых, второй вызов выводит «row2», чего можно было бы ожидать при втором вызове. Во-вторых, последующие вызовы {% cycle rowcolors %} тоже ничего не выводят!

Я что-то совсем не понимаю, или тег работает не так, как указано?


person Brendon    schedule 09.09.2012    source источник
comment
Не удалось найти образец кода в документации (docs.djangoproject. com/en/1.4/ref/templates/builtins/#cycle). У вас есть ссылка?   -  person j0ker    schedule 09.09.2012
comment
Я ошибся, я думал, что взял образец из документации, но на самом деле это был сам код. Строки 534-539, здесь: github.com/django/django /blob/мастер/джанго/шаблон/   -  person Brendon    schedule 09.09.2012


Ответы (1)


Насколько я могу судить, код строки документации функции цикла отличается от примера кода в фактическая документация. Вы должны использовать {{ rowcolors }} для отображения зацикленного текста.

Во-вторых, последующие вызовы {% cycle rowcolors %} тоже ничего не выводят!

Из документации:

Когда ключевое слово молчания используется в определении цикла, молчание автоматически применяется ко всем последующим использованиям тега цикла. В следующем шаблоне ничего не будет выведено, хотя второй вызов {% cycle %} не указывает молчание:

Пример кода, следующий за этим абзацем, похож на вашу текущую проблему.

person Martey    schedule 09.09.2012
comment
Итак, похоже, они обновили строку документации до того, как обновили код? Я бы не хотел думать, что обратное верно, что функциональность в строке документации — это то, как тег используется для работы, потому что поведение строки документации гораздо более желательно. - person Brendon; 09.09.2012
comment
Насколько я могу судить, документация и код были обновлены (чтобы исправить code.djangoproject.com/ticket/15570), а строка документации — нет. Я подал заявку (code.djangoproject.com/ticket/18933) в системе отслеживания ошибок Django. и отправил запрос на извлечение, чтобы исправить это. - person Martey; 09.09.2012