Проверка наличия чего-либо в элементах списка переменных в шаблоне Django - PullRequest
5 голосов
/ 14 августа 2011

У меня есть список разделов, которые я передаю шаблону Django. Разделы имеют разные типы. Я хочу сказать «если есть раздел этого типа, отобразить эту строку» в моем шаблоне, но возникла проблема. То, что я в основном пытаюсь сделать, это.

{% if s.name == "Social" for s in sections %}
    Hello Social!
{% endif %}

Но, конечно, это не работает. Любая идея, как в основном в одной строке перебрать элементы в списке и сделать оператор if?

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: У меня может быть несколько разделов "Социальные сети". То, что я пытаюсь сделать в шаблоне, это сказать: «если есть какие-либо социальные разделы, отобразите этот div. Если нет, не отображайте div» Но я не хочу, чтобы div повторялся, что и происходит с приведенным выше кодом.

Ответы [ 3 ]

12 голосов
/ 14 августа 2011

В идеале вы должны создать список, который шаблон получит следующим образом:

l = [s.name for s in sections]

А в шаблоне используйте:

{% if 'Social' in l %}

Вы пытаетесь поместить больше логики в шаблон, чем они должны иметь. Шаблоны должны использовать как можно меньше логики, тогда как логика должна быть в коде, который заполняет шаблон.

9 голосов
/ 14 августа 2011

Вы не можете использовать списки в шаблонах:

{% for s in sections %}
  {% if s.name == 'Social' %}
    Hello Social!
  {% endif %} {# closing if body #}
{% endfor %} {# closing for body #}
0 голосов
/ 14 августа 2011
{% if sections.0.name == "Social" %}
    Hello Social!
{% endif %}
...