Использование файла base.html, но изменение не только тела

Во-первых, у меня нет проблем с моим кодом. Этот вопрос больше похож на «Возможно ли это, и если да / нет, то как это правильно сделать?»

У меня есть веб-сайт, на котором каждая страница имеет одинаковый вид, различия между ними заключаются в следующем:

  • На главной странице есть интерактивная карта листовок (javascript)
  • Заголовки разные на каждой странице
  • Элементы в тегах заголовка меняются от одной страницы к другой, но не всегда.
  • Фоновое изображение не меняется
  • Внутри тега body у меня есть тег div, содержащий нижний колонтитул страницы, общий для всех страниц.

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

Как я уже сказал, код здесь на самом деле не проблема, но для ясности и для того, чтобы вы могли видеть, что меняется с одной страницы на другую, вот репозиторий Github для проекта. (Проект является университетским проектом, поэтому некоторые части кода написаны на французском языке, поскольку мой университет является французским университетом)

https://github.com/MaxMichel2/PWEB

Не стесняйтесь сказать мне, нужны ли какие-то разъяснения, чтобы понять мою проблему.

РЕДАКТИРОВАТЬ

Все учебные пособия по Django, которые я видел и читал в Интернете, только объясняют / говорят о разделителях {% block content %} в тегах <body>, но я не нашел никакой помощи о том, как они имеют разные части в разделе <head>.

Это просто случай использования другого разделителя {% block content %} для идентификации частей файла base.html, в которые будут добавлены/изменены части?

Если да, то можно ли получить базовый пример, чтобы увидеть, над чем я работаю?

Да, это возможно. Ваш вопрос слишком широк.

Sayse 29.05.2019 17:31

Я добавлю правку в конец вопроса.

Max Michel 29.05.2019 17:32
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
2
33
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Существует {% include template %}, который несколько противоположен base-extends, вместо того, чтобы иметь базовый шаблон и расширять его, include позволяет вам добавлять небольшие повторно используемые части кода в ваш шаблон, как в

{% extends 'base.html' %}
{% block content %}
    <some unique html to the current page>
    {% include 'some_common_html' %}      <---- right here this part doesnt have to be in base.html
    this means that you can include this part anywhere in your templates, without having it inside the base 
{% endblock %}

Это вполне может быть ответом, который наиболее подходит для моей проблемы, хотя я изначально думал, что это не то, что я буду делать. Спасибо

Max Michel 29.05.2019 17:46

Держите в base.html то, что является общим для каждой страницы. Затем предположим, что для конкретной страницы требуется определенная таблица стилей или JavaScript или заголовок страницы, а не для каждой страницы, тогда вы следуете чему-то вроде этого

base.html

<html>
    <head>
    <--! common style sheets -->
    {% block page_specific_style %}
    {% endblock %}

    <title>
        {% block title %}
        {% endblock %}
    </title>
    </head>
    <body>
        {% block content %}
        {% endblock %}

        {% block page_specific_js %}
        {% endblock %}
    </body>
</html>

Допустим, вам нужно добавить новую таблицу стилей на contact.html, а не на любую другую страницу.

контакт.html

{% load static %}
{% extends 'base.html' %}

{% block page_specific_style %}
    <link href = "{% static 'some.css' %}">
{% endblock %}

{% block title %}
    This is contact page title
{% endblock %}

{% block content %}
    content of contact page
{% endblock %}

Я хотел бы принять 2 ответа, потому что этот ответ также делает то, что я хотел бы, отлично, но может быть не самым подходящим для моей проблемы. Тем не менее, я благодарю вас за время, потраченное на ответ, и, скорее всего, буду использовать его для определенных файлов, где он более адаптирован, чем другой ответ. Спасибо

Max Michel 29.05.2019 17:48

Вы можете немного изучить, чтобы лучше понять docs.djangoproject.com/en/dev/ref/templates/builtins/#include‌​e и docs.djangoproject.com/en/dev/topics/performance/….

shafik 29.05.2019 17:53

Другие вопросы по теме