Хостинг Django от «Джино»
Table of contents

Загрузка шаблонов

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

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, перебирая их, пока не найдёт подходящий.

alerion 1 month, 3 weeks ago
Answer Link

reply to Nelly_lucky
а че за яйца?

Посмотрите в доке Python. Коротко: это способ устанавливать пакеты Python. Папка добавляется в PYTHON_PATH и Python может найти установленный в ней пакет. Типа яйцо куда угодно может отложить :)

Nelly_lucky 1 month, 4 weeks ago
Answer Link

а че за яйца?


Ищем Python программистов

Found misprint?
Select it with the mouse and hit Enter
Ctrl-Enter
Processed:
33 1 199 25


The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!

We are glad to hear your questions, comments or suggestions!
(Open in new tab)

Users number: 601

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
ЯМ:41001223475816


© 2008-2012 Ruslan Popov @ gmail.com Powered by Django 1.2.5