Моя локальная машина работает под управлением Python 2.5 и Nginx в Ubuntu 8.10 с Django, созданным на основе последних разработок.
Для каждого URL, который я запрашиваю, он выдает:
TemplateDoesNotExist в / appname / путь appname / template_name.html
Django попытался загрузить эти шаблоны в следующем порядке: * Использование загрузчика django.template.loaders.filesystem.function: * Использование загрузчика django.template.loaders.app_directories.function:
TEMPLATE_DIRS ('/usr/lib/python2.5/site-packages/projectname/templates',)
В этом случае он ищет /usr/lib/python2.5/site-packages/projectname/templates/appname/template_name.html ? Странная вещь, этот файл существует на диске. Почему Джанго не может найти это?
Я запускаю то же самое приложение на удаленном сервере с Python 2.6 в Ubuntu 9.04 без такой проблемы. Остальные настройки такие же.
Есть ли что-то неправильно настроенное на моей локальной машине, или что могло вызвать такие ошибки, которые я должен рассмотреть?
В моем settings.py я указал:
SETTINGS_PATH = os.path.normpath(os.path.dirname(__file__))
# Find templates in the same folder as settings.py.
TEMPLATE_DIRS = (
os.path.join(SETTINGS_PATH, 'templates'),
)
Нужно искать следующие файлы:
- /usr/lib/python2.5/site-packages/projectname/templates/appname1/template1.html
- /usr/lib/python2.5/site-packages/projectname/templates/appname1/template2.html
- /usr/lib/python2.5/site-packages/projectname/templates/appname2/template3.html
- ...
Все вышеперечисленные файлы существуют на диске.
решаемая
Теперь он работает после того, как я попробовал:
chown -R www-data:www-data /usr/lib/python2.5/site-packages/projectname/*
Странно. Мне не нужно делать это на удаленном сервере, чтобы заставить его работать.
Ответы:
Первое решение :
Эти настройки
означает, что Django будет смотреть на шаблоны из
templates/
каталога вашего проекта.Предполагая, что ваш проект Django находится в
/usr/lib/python2.5/site-packages/projectname/
то время с вашими настройками Django будет искать шаблоны в/usr/lib/python2.5/site-packages/projectname/templates/
Так что в этом случае мы хотим переместить наши шаблоны так:
Второе решение :
Если это все еще не работает и предполагается, что у вас есть приложения, настроенные в settings.py, например:
По умолчанию Django будет загружать шаблоны в
templates/
каталог под всеми установленными приложениями. Итак, с вашей структурой каталогов мы хотим переместить наши шаблоны так:SETTINGS_PATH
не может быть определено по умолчанию. В этом случае вы захотите определить его (в settings.py):источник
/usr/lib/python2.5/site-packages/projectname/
?templates
- не очень хороший дизайн. Но, как я знаю, после добавления вашегоAPP_NAME
вsettings.py
,django
можно перейти к поиску шаблона приложения в каталоге, который находится вAPP_DIR
. Таким образом, вы можете отделить шаблон для различных приложений. (Джанго 1.7 - .1.9Найдите этот кортеж:
Вам нужно добавить в 'DIRS' строку
Так что в целом вам нужно:
источник
SETTINGS_PATH
на самом деле нигде не определено, поэтому я не думаю, что этот ответ будет работать. Может быть, вы имели в видуBASE_DIR
SETTINGS_PATH = os.path.dirname(os.path.dirname(__file__))
, а не файлЕсли вы столкнулись с этой проблемой при добавлении
app
с нуля. Это, вероятно, потому, что вы скучаете по некоторымsettings
. Три шага необходимы при добавленииapp
.1. Создайте каталог и файл шаблона.
Предположим, у вас есть названный проект,
mysite
и вы хотите добавитьapp
именованныйyour_app_name
. Поместите файл шаблона подmysite/your_app_name/templates/your_app_name
следующим.2. Добавить
app
вINSTALLED_APPS
.Изменить
settings.py
3. Добавьте ваш
app
каталогDIRS
вTEMPLATES
.Изменить
settings.py
.источник
Устанавливая .py удалить TEMPLATE_LOADERS и матричную DIRS Тогда ADD
источник
У меня была неловкая проблема ...
Я получил эту ошибку, потому что я торопился и забыл вставить приложение
INSTALLED_APPS
. Вы могли бы подумать, что Django вызовет более описательную ошибку.источник
Просто догадка, но ознакомьтесь с этой статьей о загрузке шаблонов Django . В частности, убедитесь, что вы есть
django.template.loaders.app_directories.Loader
в своем списке TEMPLATE_LOADERS.источник
Проверьте разрешения для шаблонов и каталогов имен приложений, либо с помощью ls -l, либо попробуйте выполнить абсолютный путь open () из django.
источник
Теперь работает после того как попробовал
Странно. Мне не нужно делать это на удаленном сервере, чтобы он работал.
Кроме того, мне нужно выполнить следующую команду на локальном компьютере, чтобы все статические файлы были доступны, но на удаленном сервере все они являются «root: root».
Локальный компьютер работает на настольной версии Ubuntu 8.04. Удаленный сервер находится на версии сервера Ubuntu 9.04.
Кто-нибудь знает почему?
источник
Для django версии 1.9 я добавил
строка в блок шаблонов в settings.py, и это сработало хорошо
источник
TemplateDoesNotExist
Ошибка Django означает просто, что фреймворк не может найти файл шаблона.Чтобы использовать API загрузки шаблонов, вам нужно сообщить структуре, где вы храните ваши шаблоны. Это можно сделать в файле настроек (
settings.py
),TEMPLATE_DIRS
установив. По умолчанию это пустой кортеж, поэтому этот параметр сообщает механизму загрузки шаблонов в Django, где искать шаблоны.Выберите каталог, в котором вы хотите хранить свои шаблоны, и добавьте его в TEMPLATE_DIRS, например:
источник
Посмотрите, в какую папку django попытается загрузить шаблон, посмотрите на
Template-loader postmortem
странице ошибок, например, ошибка будет выглядеть примерно так:По моей ошибке
vcsrc\vcsrc\templates\base.html
не в пути.Затем измените
TEMPLATES
вsetting.py
файле путь к шаблонамисточник
Я должен использовать шаблоны для внутреннего приложения, и это работает для меня:
источник
Убедитесь , что вы добавили приложение к
project-name/app-namme/settings.py
INSTALLED_APPS: .И
project-name/app-namme/settings.py
ШАБЛОНЫ: .источник
Проверьте, что ваши templates.html находятся в
/usr/lib/python2.5/site-packages/projectname/templates
директории.источник
Привет, ребята, я нашел новое решение. На самом деле он определен в другом шаблоне, поэтому вместо того, чтобы определять TEMPLATE_DIRS самостоятельно, укажите путь к каталогу по адресу:
источник
Мне стыдно признаться в этом, но проблема для меня заключалась в том, что шаблон был указан как
….hml
вместо….html
. Осторожно!источник
Я добавил это
и это все еще показывало ошибку, тогда я понял, что в другом проекте шаблоны показывались без добавления этого кода в файле settings.py, поэтому я проверил этот проект и понял, что я не создал виртуальную среду в этом проекте, поэтому я сделал
и это сработало, не знаю почему
источник
Я придумал эту проблему. Вот как я решил это:
Посмотрите на ваши settings.py, найдите
TEMPLATES
переменную, внутри ШАБЛОНОВ, добавьте путь к шаблонам внутриDIRS
списка. Для меня сначала я задаю путь к шаблонам какTEMPLATES_PATH = os.path.join(BASE_DIR,'templates')
, а затем добавляюTEMPLATES_PATH
вDIRS
список'DIRS':[TEMPLATES_PATH,]
. Затем перезапустите сервер, исключение TemplateDoesNotExist пропало. Вот и все.источник
в вашем
setting.py
файле заменитеDIRS
вTEMPLATES
массиве этимк этому
но я думаю, вам нужно знать, что вы должны создать папку с именем,
templates
и она должна быть в корневом пути, иначе вам придется изменитьDIRS
значениеисточник
1. Создайте папку «templates» в вашем «приложении» (скажем, вы назвали так ваше приложение), и вы можете поместить html-файл здесь. Но настоятельно рекомендуется создать папку с тем же именем ('app') в папке 'templates' и только потом помещать туда htmls. В папку «app / templates / app»
2. Теперь в url.py приложения приложите:
3. в 'views' 'приложения добавьте:
источник