Шаблон Django DoesNotExist? - PullRequest
       85

Шаблон Django DoesNotExist?

127 голосов
/ 18 декабря 2009

Моя локальная машина работает под управлением Python 2.5 и Nginx в Ubuntu 8.10, а Django собран из последней ствола разработки.

Для каждого URL, который я запрашиваю, выдается:

TemplateDoesNotExist в / appname / path 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 / имя проекта / 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 / Библиотека / python2.5 / сайт-пакеты / имя_проекта / шаблоны / appname1 / template1.html
  • / USR / Библиотека / python2.5 / сайт-пакеты / имя_проекта / шаблоны / appname1 / template2.html
  • / USR / Библиотека / python2.5 / сайт-пакеты / имя_проекта / шаблоны / appname2 / template3.html
  • ...

Все перечисленные файлы существуют на диске.

решаемые

Теперь работает после того, как я попробовал:

chown -R www-data:www-data /usr/lib/python2.5/site-packages/projectname/*

Странно. Мне не нужно делать это на удаленном сервере, чтобы он работал.

Ответы [ 16 ]

0 голосов
/ 04 февраля 2019

Я добавил это

TEMPLATE_DIRS = (
    os.path.join(SETTINGS_PATH, 'templates'),
)

и это все еще показывало ошибку, тогда я понял, что в другом проекте шаблоны показывались без добавления этого кода в файле settings.py, поэтому я проверил этот проект и понял, что не создал виртуальную среду в этом проекте так я и сделал

virtualenv env 

и это сработало, не знаю почему

0 голосов
/ 21 августа 2018

Мне стыдно признать это, но проблема для меня заключалась в том, что шаблон был указан как ….hml вместо ….html. Берегись!

0 голосов
/ 30 марта 2018

Я должен использовать шаблоны для внутреннего приложения, и оно работает для меня:

'DIRS': [os.path.join(BASE_DIR + '/THE_APP_NAME', 'templates')],
0 голосов
/ 07 августа 2017

Привет, ребята, я нашел новое решение. На самом деле он определен в другом шаблоне, поэтому вместо того, чтобы определять TEMPLATE_DIRS самостоятельно, укажите путь к каталогу по адресу enter image description here

0 голосов
/ 16 сентября 2016

Посмотрите, какую папку django попытается загрузить шаблон, посмотрите на Template-loader postmortem на странице ошибок, например, ошибка будет выглядеть примерно так:

Template-loader postmortem

Django tried loading these templates, in this order:

Using engine django:
django.template.loaders.filesystem.Loader: d:\projects\vcsrc\vcsrc\templates\base.html (Source does not exist)

В моей ошибке vcsrc\vcsrc\templates\base.html нет пути.
Затем измените TEMPLATES в setting.py файле на путь к шаблонам

TEMPLATES = [
    {    
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
         # 'DIRS': [], 
        'DIRS': [os.path.join(BASE_DIR, 'vcsrc/templates')], 
        ...
0 голосов
/ 18 декабря 2009

Убедитесь, что ваши templates.html находятся в /usr/lib/python2.5/site-packages/projectname/templates dir.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...