Обычно, ваши шаблоны будут храниться в файлах на файловой системе, но вы можете использовать специальные загрузчики шаблонов для их загрузки из других источников.
Django может загружать шаблоны двумя способами:
django.template.loader.get_template(template_name): Метод
get_template()возвращает скомпилированный шаблон (объектTemplate) для указанного шаблона. Если шаблон не существует, вызывается исключение TemplateDoesNotExist.django.template.loader.select_template(template_name_list): Метод
select_template()подобен методуget_template(), но принимает список имён шаблонов. Метод возвращает первый существующий шаблон из этого списка. Если ни одного шаблона не существует, вызывается исключение TemplateDoesNotExist.
Как было рассказано в главе «Шаблоны», каждая из этих
функций по умолчанию использует параметр
TEMPLATE_DIRS при загрузке шаблонов. С
технической точки зрения, эти функции делегируют свою работу
загрузчику шаблонов.
Некоторые из загрузчиков отключены по умолчанию, но вы можете
активировать их, отредактировав параметр
TEMPLATE_LOADERS. Этот параметр должен
содержать кортеж строк, где каждая строка будет представлять
загрузчик. Следующие шаблонные загрузчики поставляются с Django:
django.template.loaders.filesystem.load_template_source: Этот загрузчик подгружает шаблоны с файловой системы, учитывая параметр
TEMPLATE_DIRS. Этот загрузчик включен по умолчанию.django.template.loaders.app_directories.load_template_source: Этот загрузчик подгружает шаблоны из приложений Django на файловой системе. Для каждого приложения указанного в параметре
INSTALLED_APPS, загрузчик ищет каталогtemplates. Если такой каталог существует, Django ищет шаблоны в нём.Это означает, что вы можете хранить шаблоны внутри отдельных приложений, упрощая процесс распространения приложений со стандартными шаблонами. Например, если параметр
INSTALLED_APPSсодержит ('myproject.polls', 'myproject.music'), то методget_template('foo.html')будет искать шаблоны по порядку:/path/to/myproject/polls/templates/foo.html/path/to/myproject/music/templates/foo.html
Следует отметить, что загрузчик выполняет некую оптимизацию при первой загрузке, он кэширует список приложений из параметра
INSTALLED_APPS, которые имеют свой каталогtemplates.Этот загрузчик включен по умолчанию.
django.template.loaders.eggs.load_template_source: Этот загрузчик аналогичен app_directories, но подгружают шаблоны из питонских яиц ;), а не с файловой системы. Этот загрузчик отключен по умолчанию. Если вы используете «яйца» для распространения своих приложений, вам потребуется активировать его.
Django использует загрузчики шаблонов в порядке их определения в
параметре TEMPLATE_LOADERS, перебирая их,
пока не найдёт подходящий.
| Пред. | Уровень выше | След. |
| Процессоры RequestContext и Context | Начало | Расширение шаблонной системы |
2 комментария | Оставьте комментарий
а че за яйца?
Ответ на Nelly_lucky
а че за яйца?
Посмотрите в доке Python. Коротко: это способ устанавливать пакеты Python. Папка добавляется в PYTHON_PATH и Python может найти установленный в ней пакет. Типа яйцо куда угодно может отложить :)