Джанго список с первым и последним специальным - PullRequest
1 голос
/ 24 октября 2011

Я отображаю представление списка в шаблоне django, я хотел бы, чтобы первый и последний отображаемые элементы использовали классы CSS, отличные от внутренних элементов.

Я могу сделать это, взяв фрагмент насторона питона и передача в list_of_things (фрагмент, который пропускает первый и последний элементы), first_in_list и last_in_list.Я могу сделать то же самое на стороне шаблона с {% list_of_elements|slice %}, {% list_of_elements|first %}, {% list_of_elements|last %}.Но оба кажутся не элегантными, поскольку они требуют, чтобы я повторил строку html три раза (для внутреннего, первого и последнего).

Что мне нужно, так это тест на стороне шаблона, чтобы я мог {% if ... %}только для частей, которые меняются.Это существует?Или есть лучший способ?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 24 октября 2011

Вы можете встроить свои операторы if:

<ul>
  {% for e in list_of_elements %}
    <li class='{% if forloop.first %}first{% endif %}{% if forloop.last %}last{% endif %}'>{{ e }}</li>
  {% endfor %}
</ul>

Редактировать: разрывы строк для удобства чтения:

<ul>
  {% for e in list_of_elements %}
    <li class='{% if forloop.first %}first{% endif %}
               {% if forloop.last %}last{% endif %}'>
      {{ e }}
    </li>
  {% endfor %}
</ul>
0 голосов
/ 24 октября 2011

Вы также можете использовать только CSS для этого, без Django или кода шаблона.

Пример таблицы

tr: nth-last-child (1) {⋮ объявлений}

Пример списка

li: first-child {⋮ объявлений}

и т. Д. *

...