Как структурировать папку templates в django и использовать extends
У меня есть папка templates, структурированная следующим образом
/Users/AndyKw/Documents/Python/Else/Yes/templates
Внутри templates
у меня есть две папки, admin
и registration
(дерево см. ниже)
templates (need.html)
|
|-- admin
|
|-- registration (base.html)
Файл, который я использую base.html
находится в папке registration
. Ему нужно использовать файл , need.html
в папке templates
с помощью команды extends
.
Вопрос следующий:
- Как настроить в settings.py параметр
templates
для использованияregistration
в качестве основной папки и черезbase.html
достигать с помощьюextends
файлаneed.html
в папкеtemplates
?
Одним из возможных решений было бы инвертировать путь, поместить need.html
в папку registration
и поместить base.html
в папку templates
, но команда разработчиков, похоже, не склоняется к такому решению, это был бы менее благоприятный способ.
Любые идеи/советы приветствуются.
В settings.py:
TEMPLATES = [
{
'DIRS': [
os.path.join(BASE_DIR, 'templates')
],
...
}
]
Тогда в need.html:
<head>
<!-- common headers for all templates -->
{% block head %}
{% endblock %}
</head>
<body>
<!-- common body for all template -->
{% block body %}
{% endblock %}
</body>
Затем во всех ваших шаблонах:
{% extends "need.html" %}
{% block head %}
<!-- headers here -->
{% endblock %}
{% block body %}
<!-- body here -->
{% endblock %}
Я думаю, что вы можете сделать следующее:
В файле settings.py внутри TEMPLATES измените параметр DIRS на:
'DIRS': [os.path.join(BASE_DIR, 'templates/registration'), os.path.join(BASE_DIR, 'templates')],
Таким образом, вы можете использовать {% extends "need.html" %} внутри registration/base.html.
Теперь, если вы хотите загрузить все содержимое base.html ниже расширений, сделайте следующее:
файл base.html:
{% extends "need.html" %} {% block base_content %} <html content of base.html> {% endblock base_content %}
need.html файл:
<html content of need.html> {% block base_content %}{% endblock base_content %}