Как django знает, как найти шаблоны?(1.2x) - PullRequest
3 голосов
/ 02 августа 2011

Бег через Джангобук (вер. 2). У меня были небольшие проблемы с загрузкой шаблонов; моя соответствующая файловая структура:

testSite/urls.py

testSite/books/views.py  
testSite/books/templates/

testSite/contact/views.py  
testSite/contact/templates/

Когда я настроил представление для главы с книгами (глава 5), мне удалось создать URL в urls.py, указать его на функцию представления в testSite / books / views, но когда я вызвал шаблон из этой функции просмотра, мне не нужно было указывать каталог - django знал, что он находится в testSite / books / templates.

Я попытался сделать то же самое для главы формы контакта (глава 7), но на этот раз он не загружал шаблон - мне пришлось вернуться в settings.py и явно поместить testSite / contact / templates в TEMPLATE_DIRS:

# testSite/settings.py
# ....
TEMPLATE_DIRS = (
    '/home/chris/djcode/testSite/templates',
    '/home/chris/djcode/testSite/contact/templates',
)

Итак, есть ли очевидное объяснение того, почему мне нужно указать django на папку contact / templates, а не на папку books / templates?

(Если нет, я могу опубликовать больше кода - стараясь его сократить)

Ответы [ 3 ]

3 голосов
/ 02 августа 2011

Возможно, потому что Template Loader знает, как его найти. app_directories one найдет каталог templates в каждом приложении.

django.template.loaders.filesystem.Loader будет использовать настройку TEMPLATE_DIRS.

django.template.loaders.app_directories.Loader найдет каталог templates в ваших установленных приложениях.

Если первый загрузчик в настройке TEMPLATE_LOADERS не может его найти, Django попросит следующего посмотреть, сможет ли он его найти.

Как вы говорите своим представлениям, какие шаблоны вы используете?

3 голосов
/ 02 августа 2011

Вы либо не добавили приложение контакта в INSTALLED_APPS в settings.py ИЛИ вы пытаетесь загрузить шаблон из одного приложения в другое приложение.TEMPLATE_DIRS - это место для поиска, если он не находит шаблон в том же приложении, из которого загружаются представления.

1 голос
/ 02 августа 2011

Я ожидаю, что ваше books приложение находится в INSTALLED_APPS, а contact - нет.

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