Использование файла base.html, но изменение не только тела - PullRequest
0 голосов
/ 29 мая 2019

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

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

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

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

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

https://github.com/MaxMichel2/PWEB

Не стесняйтесь сообщить мне, если есть некоторые разъяснениянеобходимы для понимания моей проблемы.

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Сохраните эту вещь в 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, а не на любую другую страницу

contact.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 %}
0 голосов
/ 29 мая 2019

Существует {% include template %}, что несколько противоположно базовым расширениям, вместо того, чтобы иметь базовый шаблон и расширять его, 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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...