Как структурировать папку 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 %}