Во-первых, у меня нет проблем с моим кодом. Этот вопрос больше похож на «Возможно ли это, и если да / нет, то как это правильно сделать?»
У меня есть веб-сайт, на котором каждая страница имеет одинаковый вид, различия между ними заключаются в следующем:
Я хотел бы знать, возможно ли использовать шаблон base.html для этих страниц, зная вышеуказанные ограничения, а также, если да, то как я могу изменить указанные страницы для этого.
Как я уже сказал, код здесь на самом деле не проблема, но для ясности и для того, чтобы вы могли видеть, что меняется с одной страницы на другую, вот репозиторий Github для проекта. (Проект является университетским проектом, поэтому некоторые части кода написаны на французском языке, поскольку мой университет является французским университетом)
https://github.com/MaxMichel2/PWEB
Не стесняйтесь сказать мне, нужны ли какие-то разъяснения, чтобы понять мою проблему.
РЕДАКТИРОВАТЬ
Все учебные пособия по Django, которые я видел и читал в Интернете, только объясняют / говорят о разделителях {% block content %}
в тегах <body>
, но я не нашел никакой помощи о том, как они имеют разные части в разделе <head>
.
Это просто случай использования другого разделителя {% block content %}
для идентификации частей файла base.html, в которые будут добавлены/изменены части?
Если да, то можно ли получить базовый пример, чтобы увидеть, над чем я работаю?
Я добавлю правку в конец вопроса.
Существует {% 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 %}
Это вполне может быть ответом, который наиболее подходит для моей проблемы, хотя я изначально думал, что это не то, что я буду делать. Спасибо
Держите в 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 ответа, потому что этот ответ также делает то, что я хотел бы, отлично, но может быть не самым подходящим для моей проблемы. Тем не менее, я благодарю вас за время, потраченное на ответ, и, скорее всего, буду использовать его для определенных файлов, где он более адаптирован, чем другой ответ. Спасибо
Вы можете немного изучить, чтобы лучше понять docs.djangoproject.com/en/dev/ref/templates/builtins/#includee и docs.djangoproject.com/en/dev/topics/performance/….
Да, это возможно. Ваш вопрос слишком широк.