Есть моменты, когда вы хотели бы использовать другой шаблон, основанный на стоимости заголовка HTTP-запроса. Например, различные доменные имена, разные типы браузеров, или даже ссылающаяся страница. Проект DynamicLoader позволяет указать отдельный список каталогов, в которых Django должны искать шаблоны, на основе значения в заголовке запроса.
Установка
1. Установите `` dynamicloader`` на вашем пути Python.
2. Добавить `` 'dynamicloader.middleware.RequestMiddleware', `` в вашем `` обстановке MIDDLEWARE_CLASSES``.
3. Добавить `` 'dynamicloader.loader.load_template_source', `` на верхней * * вашего `` обстановке TEMPLATE_LOADERS``.
4. Создайте новый параметр `` DYN_TEMPLATE_MAP``, в следующем формате ::
& NBSP; & NBSP; & NBSP; DYN_TEMPLATE_MAP = {
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; "HTTP_HEADER1": {
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; re.compile ('значение1'): ('/ путь / к / Каталог "," / путь / к / directory2 ",),
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; re.compile ('значение2'): ('/ путь / к / directory3 ",)
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; },
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; "HTTP_HEADER2": {
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; re.compile ('значение1'): ('/ путь / к / directory4 ",)
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; }
& NBSP; & NBSP; & NBSP; }
Примеры Шаблон Карта
Имя домена Различия
Этот пример позволяет переопределение некоторых шаблонов на основе доменного имени или субдомена. В этой установке, Джанго будет выглядеть в `` / путь / к / directory`` в первую очередь, если `` HTTP_HOST`` включает в себя стоимость `` www2``.
& NBSP; & NBSP; & NBSP; DYN_TEMPLATE_MAP = {
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; "HTTP_HOST ': {
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; re.compile ('www2'): ('/ путь / к / Каталог ",),
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; },
& NBSP; & NBSP; & NBSP; }
Браузер Различия
Этот пример позволяет доставку различных шаблонов (или просто специфические) на основе браузера пользователя.
& NBSP; & NBSP; & NBSP; DYN_TEMPLATE_MAP = {
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; "HTTP_USER_AGENT": {
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; re.compile ('iPhone | Ipod'): ('/ путь / к / Каталог ",),
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; },
& NBSP; & NBSP; & NBSP; }
Различия строку запроса
Этот пример проверяет строку запроса, чтобы решить, какой шаблон использовать, основываясь на строке запроса (материал после '?' В URL).
DYN_TEMPLATE_MAP = {
& NBSP; & NBSP; & NBSP; 'СТРОКА ЗАПРОСА': {
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; re.compile ('imreallycool = 1'): ('/ путь / к / Каталог ",),
& NBSP; & NBSP; & NBSP; },
}
Требования
- Python
- Джанго
Комментарии не найдены