|
Оглавление
|
Встроенные в Django шаблонные загрузчики (описанные в секции «Загрузка шаблонов») покрывают практически все ваши нужды, но в случае необходимости будет достаточно просто реализовать свой собственный загрузчик. Например, вы можете загружать шаблоны из базы данных или напрямую из репозитория Subversion, или из ZIP архива.
Ожидается, что каждый шаблонный загрузчик, описанный в параметре
load_template_source(template_name, template_dirs=None)
Аргумент template_name является именем шаблона,
который требуется загрузить (имя передаётся в
loader.get_template() или
loader.select_template()), а
template_dirs является необязательным списком
каталогов, в которых следует производить поиск вместо указанных
в Если загрузчик может успешно загрузить шаблон, он должен возвратить кортеж (template_source, template_path). Здесь template_source является шаблонной строкой, которая будет скомпилирована шаблонной системой, а template_path — путь до загружаемого шаблона. Этот путь может отображаться пользователю в отладочных целях. Если загрузчик не может загрузить шаблон, он должен вызывать исключение django.template.TemplateDoesNotExist. Функция каждого загрузчика должна также иметь атрибут is_usable. Это значение булевого типа, которое информирует шаблонную систему о том, доступен ли этот загрузчик текущему проекту. Например, загрузчик, который может загружать шаблоны из питонских яиц ;) устанавливает значение False для этого атрибута, если модуль pkg_resources не установлен, так как этот модуль необходим для его работы с яйцами.
Пример должен всё прояснить. Ниже представлена функция
шаблонного загрузчика, который может загружать шаблоны из ZIP
файла. Он использует свой конфигурационный параметр
import zipfile
from django.conf import settings
from django.template import TemplateDoesNotExist
def load_template_source(template_name, template_dirs=None):
"""Template loader that loads templates from a ZIP file."""
template_zipfiles = getattr(settings, "TEMPLATE_ZIP_FILES", [])
# Try each ZIP file in TEMPLATE_ZIP_FILES.
for fname in template_zipfiles:
try:
z = zipfile.ZipFile(fname)
source = z.read(template_name)
except (IOError, KeyError):
continue
z.close()
# We found a template, so return the source.
template_path = "%s:%s" % (fname, template_name)
return (source, template_path)
# If we reach here, the template couldn't be loaded
raise TemplateDoesNotExist(template_name)
# This loader is always usable (since zipfile is included with Python)
load_template_source.is_usable = True
Для того, чтобы воспользоваться данным загрузчиком, его надо
добавить в параметр |
Увидели ошибку?
Выделите её мышкой и нажмите
-
Обработано:
1049
49
130
71
Версия книги
1.0
2.0
Версия 2.0 в процессе перевода!
Мой луч
Многообразие света
Полезное
Актуальные вакансии,
Python работа
для python-разработчиков.
Скачать в формате
CHM от 2 сентябряЗаказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта. Чем чаще заказываете — тем больше перевожу. Русская группа
Ускорить процесс перевода!
R130494980980
Z425285133788 E112528079659 U327380922061 Книга помогла реализовать:
|
| © 2008-2009 Ruslan Popov @ gmail.com | Powered by Django 1.1 beta 1 SVN-11114 |