Почему я получил ошибку Template does not exist, хотя, казалось бы, Django предлагает гибкость в отношении структуры папок?
Я прочитал несколько сообщений здесь, где люди обсуждали предпочтительную структуру каталогов для хранения различных файлов своего проекта Django. Но я получаю ошибку file-does-not-exist, если я помещаю свои шаблоны во внутреннюю папку my_project вместо внешней папки my_project, которая содержит файл manage.py. Есть ли какой-то файл конфигурации, который определяет расположение шаблонов (и других файлов) по умолчанию? Не могли бы вы помочь мне с изменением команды, если я помещу шаблоны во внутреннюю (подпапку)? Я только что начал свой первый проект Django и буду признателен за вашу помощь.
Ок, django ищет ваши шаблоны в местах по умолчанию. Я рекомендую вам поместить ваши html файлы туда (как новичку).
Места по умолчанию:
- my_site_project/
-- templates/
--- base.html
--- navbar.html
--- footer.html
-- my_app1/
--- templates/
---- my_app1/
----- index_app1.html
----- about_app1.html
-- manage.py
Если вы поместите общую папку templates/
внутрь вашего проекта, в ту же папку, что и manage.py
, эти шаблоны будут извлечены.
Если вам нужны шаблоны для конкретного приложения, то по правилам нужно поместить папку внутри вашего приложения, опять же под названием templates/
. Это может привести к дублированию, если вы поместите index.html
внутри шаблонов вашего приложения, а index.html
внутри общих templates/
. Поэтому вам необходимо разделить шаблоны вашего приложения по именам. Создайте приложение; создайте внутри него папку templates/
; внутри только что созданной папки templates/
создайте еще одну папку my_app1
; в этой папке создайте свои .html файлы.
Прочитайте учебник здесь . Возможно, его будет легче понять, чем мою тарабарщину. Это официальный учебник по django.
Часть его:
Сначала создайте каталог с названием templates в вашем каталоге polls. Django будет искать шаблоны в этом каталоге.
Настройка TEMPLATES вашего проекта описывает, как Django будет загружать и отображать шаблоны. Файл настроек по умолчанию конфигурирует DjangoTemplates, чей параметр APP_DIRS установлен в True. По соглашению DjangoTemplates ищет поддиректорию "templates" в каждом из INSTALLED_APPS.
Вы можете в своих settings.py
через DIRS
указать, где django ищет ваши шаблоны. Хотя как начинающий я не знаю, почему бы вам не придерживаться сначала конвенций.