Как сделать Django вложенных шаблонов для лучшего SRP - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь создать базовый шаблон для своего сайта. В идеале это выглядело бы так:

{% block navigationbar %}{% endblock %}
{% block content %}{% endblock %}
{% block footer %}{% endblock %}

. Таким образом, я могу иметь отдельную навигационную панель. html и нижний колонтитул. html файлы. Все взгляды, которые я хотел бы показать, тогда просто поместили бы это:

{% extends 'portfolio/base.html' %}
{% block content %}
// View Code here
{% endblock %}

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

Так что идеальным результатом было бы 4 файла. для домашней страницы:

  1. NavigationBar. html - содержит штрих-код навигации
  2. Нижний колонтитул. html - Содержит код нижнего колонтитула
  3. База. html - содержит панель навигации, нижний колонтитул и содержимое
  4. Home. html - содержит содержимое домашней страницы, но при загрузке пользователь видит панель навигации и нижний колонтитул.

1 Ответ

1 голос
/ 01 марта 2020

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

Этот пример включает в себя содержимое шаблона «NavigationBar. html» и «Footer. html» в вашем шаблоне:

{% extends 'portfolio/base.html' %}

{% block content %}
    {% include "NavigationBar.html" %}

    // View Code here

    {% include "Footer.html" %}
{% endblock %}

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

{% include "NavigationBar.html" with breadcrumb="home > wherever" %}
...