Джанго не может найти мои шаблоны - PullRequest
6 голосов
/ 31 октября 2010

Я использую Python 2.6.1 и Django 1.2.1 в Windows XP SP3. Я использую JetBrains PyCharm 1.0 для создания и развертывания моих приложений Django.

Я относительно неопытен в Python, и я начинаю изучать Django, следуя инструкциям «Написание вашего первого приложения Django» с веб-сайта - приложения для опросов. Я застрял на часть 3 .

Все нормально, когда я добавляю простые функции обратного вызова для «Написание вашего первого представления».

Я попал в ловушку, когда попал на «Писать представления, которые действительно что-то делают».

Я следовал инструкциям для изменения представления индекса:

  1. Добавить новый метод в views.py (Примечание - шаблон готов из 'polls / index.html'):
  2. Добавить шаблон index.html в папку site-templates/polls/
  3. Измените settings.py так, чтобы он указывал на папку site-templates

Вот код в моих views.py:

from django.template import Context, loader
from polls.models import Poll
from django.http import HttpResponse

def index(request):
    latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5]
    t = loader.get_template('polls/index.html')
    c = Context({
        'latest_poll_list': latest_poll_list,
    })
    return HttpResponse(t.render(c))

Вот строка в моих настройках.py:

TEMPLATE_DIRS = ('/site-templates/')

Но все равно я получаю это сообщение при запуске:

TemplateDoesNotExist at /polls/
polls/index.html
Request Method: GET
Request URL:    http://localhost:8000/polls/
Django Version: 1.2.1
Exception Type: TemplateDoesNotExist
Exception Value:    
polls/index.html

Исключение выдается в loader.py. Мои настройки отладки выглядят так:

TEMPLATE_CONTEXT_PROCESSORS 
('django.core.context_processors.auth', 'django.core.context_processors.request')
TEMPLATE_DEBUG  
True
TEMPLATE_DIRS   
('/site-templates',)
TEMPLATE_LOADERS    
('django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader')

Моя структура каталогов выглядит так:

alt text

Что я пропустил? Неверный ли файл settings.py? Пожалуйста, сообщите.

Ответы [ 4 ]

12 голосов
/ 24 июля 2017

Я столкнулся с той же проблемой. В моем случае ошибка заключалась в том, что «app» не было в списке INSTALLED_APPS в файле settings.py проекта.

Ошибка вызывает сообщение об ошибке, они предлагают аналогичную ошибку.

line 25, in get_template TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: authControll/index.html

settings.py -> Определение приложения

INSTALLED_APPS = [
    ...,
    'authControll'
]
5 голосов
/ 01 ноября 2010

Вы должны использовать абсолютные пути в настройке TEMPLATE_DIRS.

Удобная вещь, в верхней части ваших настроек, вставить:

import os
DIRNAME = os.path.abspath(os.path.dirname(__file__))

Затем везде, где вы используете путь, используйте os.path.join.Например, ваш TEMPLATE_DIRS станет:

TEMPLATE_DIRS = (
    os.path.join(DIRNAME, 'site-templates/'),
)
0 голосов
/ 28 июня 2014

Это, безусловно, решит проблему, вместо всего вышеперечисленного попробуйте добавить только строку ниже в settings.py:

TEMPLATE_DIRS = (
    "appname/templates",
)
0 голосов
/ 01 ноября 2010

http://docs.djangoproject.com/en/1.2/ref/templates/api/#loading-templates Небольшое исправление для ответа @zsquare:

import os
DIRNAME = os.path.abspath(os.path.dirname(__file__))

TEMPLATE_DIRS = ( DIRNAME+'/site-templates/' )
...