Джанго лжет мне ?! Функция render_to_response возвращает TemplateDoesNotExist, когда файл действительно существует - PullRequest
0 голосов
/ 06 июня 2011

OK. Я читал много других сообщений об этом, и они всегда решались, когда задающий вопрос корректно изменял настройку TEMPLATE_DIRS. Ни одно из этих предложений не сработало для меня. Странно то, что шаблон загружается при использовании веб-сервера Django, но выдает ошибки при использовании mod_wsgi. Я думаю, что django может выдавать неправильное исключение, потому что ошибка TemplateDoesNotExist просто не может быть применена, учитывая мои настройки.

Мой код:

мое приложение / views / view.py (да, у меня есть мои представления в подпапке)

  8 def index(request):
  9     return render_to_response('pages/home/base_home.html')

Вот мой файл settings.py, расположенный в корневом каталоге (стандартное расположение)

106 TEMPLATE_DIRS = (
107     # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
108     # Always use forward slashes, even on Windows.
109     # Don't forget to use absolute paths, not relative paths.
110     "/home/foobar/templates",
111 )

И, наконец, вот мое представление, расположенное в / home / foobar / templates / pages / home /

  1 {% extends 'base.html' %}
  2 
  3 {% block navigation %}
  4     {% include 'modules/navigation/navigation.html' %}
  5 {% endblock %}
  6 
  7 {% block slideshow %}
  8     {% include 'modules/slideshow/slideshow.html' %}
  9 {% endblock %}

Кроме того, вот ls -l, доказывающий, что файл существует

foo@bar:~$ ls -l templates/pages/home/
total 12
-rwxr-xr-x 1 foo foo 205 2011-06-05 12:37 base_home.html
foo@bar:~$ 

Вот посмертный отчет, который Django дает мне:

Template-loader postmortem

Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
/home/foobar/templates/pages/home/base_home.html (File does not exist)
Using loader django.template.loaders.app_directories.Loader:
/usr/local/lib/python2.6/dist-packages/django/contrib/admin/templates/pages/home/base_home.html (File does not exist)

редактировать

Вот мой файл wsgi

  3 import os
  4 import sys
  5 
  6 path = '/media/PENDRIVE/Projects/'
  7 if path not in sys.path:
  8     sys.path.append(path)
  9     
 10 os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
 11 
 12 import django.core.handlers.wsgi
 13 application = django.core.handlers.wsgi.WSGIHandler()
 14 

Спасибо за понимание, я сбит с толку и застрял!

Ответы [ 3 ]

0 голосов
/ 06 июня 2011

Вы не указали правильный URL.Это должно быть "pages / home / modules / navigation / navigation.html"

0 голосов
/ 19 октября 2015

это должно быть решено путем замены полного пути BASE_DIR в settings.py

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': ['/var/www/assistance/templates','templates'],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},
]
0 голосов
/ 06 июня 2011

Вы должны проверить, является ли папка шаблона доступной для чтения пользователем, с которым запускается процесс wsgi.Я полагаю, это простая проблема с разрешениями.

...