Неразбиране на маркера за цикъл в 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/master/django/template/   -  person Brendon    schedule 09.09.2012


Отговори (1)


Доколкото мога да преценя, кодът е docstring на функцията cycle е различен от примера за код в действителната документация. Трябва да използвате {{ rowcolors }} за показване на цикличния текст.

Второ, следващите {% cycle rowcolors %} извиквания също не извеждат нищо!

От документацията:

Когато ключовата дума silent се използва в дефиниция на цикъл, мълчанието автоматично се прилага за всички последващи употреби на тага за цикъл. Следният шаблон няма да изведе нищо, въпреки че второто извикване на {% cycle %} не указва безшумен:

Примерът за код, който следва този параграф, изглежда е подобен на текущия ви проблем.

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