То, что сказал Асинокс, неверно. Вы МОЖЕТЕ иметь глобальный каталог шаблонов, даже несколько из них. Но это не обязательно.
Фактически загрузка шаблона выполняется следующим образом:
- Django берет имя первого класса из
TEMPLATE_LOADERS
переменная настроек
- Создает экземпляр загрузчика шаблона на основании его имени
- Он пытается загрузить шаблон, используя этот экземпляр
- Если это удастся - шаблон возвращается
- Если не удается загрузить шаблон - он принимает следующее имя и начинает заново с 2.
- Если ни одному из загрузчиков шаблонов, перечисленных в
TEMPLATE_LOADERS
, не удалось загрузить шаблон, TemplateDoesNotExist
исключение повышено
По умолчанию TEMPLATE_LOADERS
установлено на
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
)
Как сказал Мэтью TEMPLATE_DIRS
используется исключительно загрузчиком filesystem.load_template_source
. Поэтому, если вы исключите его из списка, это никак не повлияет на процесс загрузки шаблона.
Для того, чтобы ваш шаблон был найден, я предлагаю вам сделать следующее:
- Создайте пространство имен index.html, то есть сделайте так:
.
`-- djangoproject1
`-- authentication
`-- templates
`-- authentication
`-- index.html
- Загрузить шаблон пространства имен:
urlpatterns = patterns('',
(r'^$', direct_to_template, {'template': 'authentication/index.html'}),
)
Если вы этого не сделаете, вы не можете быть уверены, что Django загрузит index.html из приложения аутентификации.
Рассмотрим поведение app_directories.load_template_source
загрузчика шаблонов.
Представим, что вы только что определили два приложения app1 и app2 (другие приложения не определены) и попросили загрузить шаблон 'path / to / template.html'.
Загрузчик будет проверять следующие пути в произвольном порядке:
- project_root / app1 / шаблоны / путь / к / template.html
- project_root / app2 / шаблоны / путь / к / template.html