#django #django-templates
#django #django-шаблоны
Вопрос:
Возможно, это не вопрос, но как вы используете функциональность Django {% cycle %}
или что-то подобное, когда вы не находитесь в цикле? В частности, у меня есть HTML-таблица, которую я пишу вручную, поскольку это не то, что вам нужно делать в цикле. Я хочу, чтобы строки чередовались, вот так:
<tr class="{% cycle 'even' 'odd'%}"></tr>
<tr class="{% cycle 'even' 'odd'%}"></tr>
<tr class="{% cycle 'even' 'odd'%}"></tr>
Но я не использую цикл, поэтому это всегда приводит к even
. Я не хочу ситуации, когда я хочу вставить одну строку позже, а затем вручную изменять классы всех строк под ней. Я просто мелочный? Как бы вы выполняли цикл, не находясь в цикле?
Ответ №1:
В cycle
документах есть раздел, посвященный использованию вне циклов:
В некоторых случаях вы можете захотеть обратиться к следующему значению цикла извне цикла. Чтобы сделать это, просто дайте тегу {% cycle %} имя, используя «as», вот так:
{% cycle 'row1' 'row2' as rowcolors %}
С этого момента вы можете вставлять текущее значение цикла везде, где захотите, в свой шаблон, ссылаясь на имя цикла как контекстную переменную. Если вы хотите переместить цикл к следующему значению, вы снова используете тег cycle, используя имя переменной. Итак, следующий шаблон:
<tr> <td class="{% cycle 'row1' 'row2' as rowcolors %}">...</td> <td class="{{ rowcolors }}">...</td> </tr> <tr> <td class="{% cycle rowcolors %}">...</td> <td class="{{ rowcolors }}">...</td> </tr>
выводил бы:
<tr> <td class="row1">...</td> <td class="row1">...</td> </tr> <tr> <td class="row2">...</td> <td class="row2">...</td> </tr>
Итак, в вашем случае вы бы просто объявили его один раз, а затем вызывали {% cycle name %}
для каждой строки.