Шаблонный цикл Django для чередующихся строк - без цикла - PullRequest
5 голосов
/ 28 апреля 2011

Возможно, это не вопрос, но как использовать функциональность Django {% cycle %} или что-то подобное, когда вы не в курсе?В частности, у меня есть HTML-таблица, которую я пишу от руки, так как это не та вещь, которую нужно делать в цикле.Я хочу, чтобы строки чередовались, например:

   <tr class="{% cycle 'even' 'odd'%}"></tr>
   <tr class="{% cycle 'even' 'odd'%}"></tr>
   <tr class="{% cycle 'even' 'odd'%}"></tr>

Но я не использую цикл, поэтому это всегда приводит к even.Я не хочу ситуации, когда я хочу вставить одну строку позже, а затем вручную изменить классы всех строк под ним.Я просто мелочная?Как бы вы ездили на велосипеде, не зацикливаясь?

1 Ответ

10 голосов
/ 28 апреля 2011

Есть раздел, посвященный использованию cycle вне циклов на документах :

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

{% cycle 'row1' 'row2' as rowcolors %}

С этого момента вы можете вставлять текущее значение цикла в любое место в своем шаблоне, ссылаясь на имя цикла в качестве переменной контекста. Если вы хотите переместить цикл к следующему значению, вы снова используете тег цикла, используя имя переменной. Итак, следующий шаблон:

<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 %} в каждой строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...