Цикл Django включает теги шаблона - PullRequest
1 голос
/ 23 сентября 2019

Я хочу перебрать теги включения в шаблоне django, но не могу вложить цикл внутри включений.Цикл должен выглядеть примерно так:

include cycle left_align.html right_align.html

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

{% for s in sections %}

<section class="{% cycle 'lighter-section' 'cover cover-bg-section' %}">
    {% if s.media.values %}

    {% include 'web_builder/apple-pie/sections/left_align.html' %}

    {% else %}

    {% include 'web_builder/apple-pie/sections/center_align.html' %}

    {% endif %}
</section>

{% endfor %}

1 Ответ

1 голос
/ 24 сентября 2019

К сожалению, нет способа присвоить результат cycle templatetag переменной с блоком with, но вы можете использовать ключевое слово as, чтобы вывести его результат в переменную и использовать его там, где вы хотите, например, {% cycle 'left_align.html' 'right_align.html' as include_file %}.Однако это имеет побочный эффект.

Эта инструкция сама выдает результат цикла, хотя она также зарегистрирована в переменной.В качестве обходного пути вы можете поместить его, например, в атрибут data- некоторого HTML-элемента, чтобы он не отображался, и использовать эту переменную позже при полной конкатенации пути шаблона внутри тега include.

Полный пример:

  {% for i in "xxxxxxxxxxxxxxxxx" %}
    <section data-include-file="{% cycle 'left_align.html' 'right_align.html' as include_file %}">
    {% include 'web_builder/apple-pie/sections/'|add:include_file %}
    </section>
  {% endfor %}

Однако, поскольку это выглядит уродливо и сложно, я бы также подумал о том, чтобы написать для этого собственный тег включения.

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