Игнорировать {% extends%}, когда включено (шаблоны Django) - PullRequest
0 голосов
/ 17 мая 2018

У меня есть шаблон, к которому я хочу получить доступ из include, а также чтобы он был доступен как отдельная страница с extends.

Есть Base.html:

    <!-- some html, navbar -->
    {% block content %}
    {% endblock %}
    <!-- footer and other stuff -->

Существует HomePage.html:

    {% extends 'Base.html' %}
    {% block content %}
    <!-- some HomePage content -->
    {% endblock %}

Есть MyTemplate.html:

    {% extends 'Base.html' %}
    {% block content %}
    <!-- some content from MyTemplate -->
    {% endblock %}

Я хочу добавить содержимое MyTemplate.html на HomePage. Если я добавлю {% include 'MyTemplate.html' %} к HomePage.html, я получу две навигационные панели, потому что Base.html увеличивается в два раза. Но мне все еще нужно, чтобы MyTemplate.html был доступен как отдельная страница с навигационной панелью и другими Base.html материалами. Как игнорировать {% extends %}, если шаблон включен из другого?

На данный момент в качестве обходного пути я добавил еще один файл, скажем MyPage.html. Этот файл расширяет Base.html и включает MyTemplate.html. HomePage.html также включает MyTemplate.html, а MyTemplate.html ничего не расширяет. Я просто хотел узнать, есть ли более подходящий способ сделать то, что я хочу.

UPD : я использую два представления. Один из них использует HomePage.html, а другой использует MyTemplate.html (MyPage.html на данный момент).

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Я создаю каталог с именем includes в этом я создал MyTemplate.html файл.

Это мой HomePage.html

{% extends 'Base.html' %}
{% block content %}
{% include 'includes/MyTemplate.html' %}
{% endblock %}

Это мой MyTemplate.html

<div>
<!-- some content from MyTemplate -->
</div>

У меня все работает нормально.Я не включен {% extends 'Base.html' %} в MyTemlate.html, потому что он уже найден в HomePage.html

0 голосов
/ 17 мая 2018

extends можно использовать фильтр шаблона yesno.Вы можете использовать что-то подобное в HomePage.html

{% extends request.some_flag|yesno:"Base.html,none.html" %}

set some_flag = True или False в зависимости от вашего состояния (none.html может быть пустым файлом).Таким образом, вы можете указать, когда вы пошли расширять Base.html или нет.Вы также можете указать переменную

{% extends my_file %} 

, где my_file = "Base.html" или "none.html"

...