Учебное пособие по Django - TemplateDoesNotExist в / polls / - PullRequest
2 голосов
/ 28 октября 2010

Я пытался заставить это работать миллион раз. Я оставлю это в покое на неделю и вернусь. Я прогуглил и прочитал каждый пост, касающийся этого. Я позволил небезопасным дебилам умалять группы сообщений, так и не найдя ответа. Я просто хочу, чтобы это сработало. Когда я буду следовать третьей части учебника по Django, я перехожу к той части, где вы создаете шаблон для индексной страницы, и когда я проверяю его в браузере, он обнаруживает TemplateDoesNotExist at /polls/. Я проверил владение файлом, переместил все вокруг, всегда меняя TEMPLATES_DIR в setting.py. Я передал содержимое файла в cat, чтобы убедиться, что он работает. Я разрубил животных до странных богов, чтобы заставить это работать. Я обращаюсь к вам сейчас. Я уверен, что это самая глупая вещь, когда-либо, у меня очень мало сомнений по этому поводу. Я просто хочу, чтобы это сработало.

Я не уверен, какие части кода / трассировки вам нужны / нужны здесь, дайте мне знать, что я опубликую их. Я делаю это на Ubuntu 10.10

EDIT

С settings.py:

TEMPLATE_DIRS = (
    "home/kevin/first/tutorial/temps"
)

Раньше он жил в ~, но я переместился в папку проекта, думая, что это поможет.

Структура (исключая все соответствующие файлы Python):

~/first/tutorial/:
__init__.py,
manage.py,
polls,
settings.py,
temps,
tut.db,
urls.py

temps:
index.html

polls:
admin.py,
__init__.py,
models.py,
tests.py,
views.py,

Ответы [ 5 ]

8 голосов
/ 28 октября 2010
>>> TEMPLATE_DIRS = ( "home/kevin/first/tutorial/temps" )
>>> print TEMPLATE_DIRS
home/kevin/first/tutorial/temps
>>> type(TEMPLATE_DIRS)
<type 'str'>

Это строка, а не кортеж.

TEMPLATE_DIRS = ( "home/kevin/first/tutorial/temps", )

Это кортеж.Немного об ошибке Python.

Кроме того, используйте абсолютный путь, а не относительный путь.

2 голосов
/ 28 октября 2010

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

PROJECT_ROOT = os.path.realpath(os.path.dirname(__file__))

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

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

Вы также должны убедиться, что ваша настройка TEMPLATE_LOADERS содержит или выглядит следующим образом:

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)

Если это не помогло (вы все равно должны сохранить вышесказанное), проблема, скорее всего, связана с шаблоном, который вы отображаете. Убедитесь, что строка шаблона, который вы используете в представлении, правильно соответствует относительному пути шаблона в вашем каталоге templates. Другими словами, если по вашему мнению строка шаблона 'polls/index.html', убедитесь, что файл действительно расположен по адресу templates/polls/index.html.

1 голос
/ 12 января 2012

В моем файле конфигурации settings.py я использовал:

"TEMPLATE_DIRS = (
             '/path/to/folder/Python-templates',
)"

И это сработало. Я предполагаю (и исправляю меня, если я ошибаюсь), что пример в руководстве по django ссылается на точное местоположение шаблона в папке с шаблонами, которая равна polls. Таким образом, в примере, приведенном в этом руководстве, путь к файлу polls/index.html гласит «файл index.html в папке polls, который уже находится в папке шаблона, указанной в settings.py».

0 голосов
/ 18 апреля 2016

У меня была та же проблема, что вы описали, когда я выполнял третью часть учебника по Django, выкидывал TemplateDoesNotExist.

Перезапуск сервера решил это за меня (не изменил никаких настроек).Надеюсь, это поможет ...

0 голосов
/ 28 октября 2010

Что нужно проверить:

Используете ли вы абсолютный путь для указания каталога шаблонов в settings.py?

Вы поместили шаблон непосредственно в каталог TEMPLATE_DIR, или вы создали подпапку polls для размещения шаблона?

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