Django включить шаблон, перезаписать переменную "self"? - PullRequest
0 голосов
/ 12 февраля 2020

Мне было поручено исправить структуру шаблона в приложении Django. Я не очень знаком с Django, так как я имею дело в основном с внешними проектами, созданными в React.

Приложение Django использует Wagtail в качестве внутренней CMS. Я перебираю его страницы, включаю блок шаблона и пытаюсь передать переменные с помощью оператора with в include. Я могу успешно передать переменные в блок шаблона, но мне нужно перезаписать переменную «self», так как блок шаблона ищет self.something.

Вот как выглядит мой шаблон.

{% load static wagtailimages_tags wagtailcore_tags %}

<div class="c-card {% if self.variant %}c-card--{{ self.variant }}{% endif %}">
    {% if self.image %}
        {% image self.image original class="c-card__image" loading="lazy" %}
    {% endif %}

    {% if self.title %}
        <h3 class="c-card__title">{{ self.title }}</h3>
    {% endif %}

    {% if self.text %}
        <p class="c-card__content">{{ self.text }}</p>
    {% endif %}

    {% if self.button.title and self.button.url %}
        {% include './button_block.html' with button=self.button %}
    {% endif %}
</div>

, а затем есть l oop и включающий фрагмент ...

{% for chapter_menu in page.chapters %}
    <div class="medium-6 large-4 columns">
        {{ chapter_menu.value.title }}
        {% include './blocks/card_block.html' with self=chapter_menu.value %}
    </div>
{%  endfor %}

Выполнение этого self=chapter_menu.value приводит к ошибке TypeError, которая ожидается, поскольку я определяю self дважды. push() got multiple values for argument 'self'

Как я могу go сделать это? Любые документы, которые я могу прочитать, кроме базовых c django шаблонных документов? https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#with

1 Ответ

0 голосов
/ 12 февраля 2020

добавить атрибут only для включения .... Не нашел ни в одной документации ...

{% include './blocks/card_block.html' with self=chapter_menu.value only %}

...