Django: base.html "TemplateDoesNotExist at / error" и структура проекта
Когда в моем файле home.html (или любом другом .html) я пытаюсь расширить мой файл base.html этим
{% extends "static/src/base.html" %}
Я получаю эту ошибку:
TemplateDoesNotExist at / error
Также, я собираюсь начать свой первый "серьезный" проект, и поэтому я пытаюсь делать вещи немного менее по-любительски, начиная со структуры проекта. Это то, к чему я пришел на данный момент, следуя подсказкам, которые я получил с другого сайта, но я хотел бы услышать мнение людей с большим опытом, чем у меня, если это хороший способ начать проект. В частности, я немного запутался в том, куда поместить файл base.html. Можно ли поместить его в папку src или его следует поместить вместе со страницами navbar.html/footer.html/etc или navbar.html/footer.html/etc следует поместить в папку src?
Вот структура моего проекта:
website_name
- core (where is the settings.py and where I put homepage, news page, contact and about us page...)
- app name_1 (like members)
- app name_2
- media
-- img
-- upload (user ulploaded excel file)
--- excel_file.csv
-- download (for user to download file)
- static
-- src
--- base.html
--- style.css
-- dist
--- style.css
-- node_modules
-- [...]
- template
-- core
--- home.html
--- news_list.html
--- news_delete.html
--- [...]
-- app name_1
-- app name_2
-- navbar.html
-- footbar.html
-- [...]
Спасибо за помощь!
нормальной структурой является размещение шаблонов в папке app:
- core
-- templates
--- core
---- my_base_template.html
- app_name1
-- templates
--- app_name1
---- my_base_template.html
- app_name2
-- templates
--- app_name2
---- my_template1.html
{% extends "app_name1/my_base_template.html" %}
....
---- my_template2.html
{% extends "core/my_base_template.html" %}
При правильной настройке параметров шаблонизатор будет автоматически искать файлы шаблонов в папках app/templates/.
Пожалуйста, проверьте settings.py на TEMPLATES -> APP_DIRS=True из Django docs https://docs.djangoproject.com/en/4.0/topics/templates/ :
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
# ... some options here ...
},
},
]
логически шаблоны не являются статическими, а отображаются во время выполнения, поэтому они не имеют смысла в структуре статических папок.