представление django / перенаправление шаблонов для мобильных браузеров - PullRequest
1 голос
/ 20 марта 2011

Не уверен, что у кого-то был опыт с хорошим решением для рендеринга шаблонов специально для мобильных устройств, использующих django.

Я написал процессор запросов промежуточного программного обеспечения, который использует регулярные выражения для определения, является ли это мобильным браузером или нет.В настоящее время я устанавливаю логический атрибут для запроса, чтобы я мог использовать его в дальнейшем.Но на самом деле моя бизнес-логика такая же, я просто хочу использовать другой набор шаблонов.

Есть ли способ добавить новый каталог шаблонов в settings.TEMPLATE_DIRS в процессоре промежуточного ПО, чтобы мобильныйПользователь получит представления, которые я выберу переписать, но все остальное будет возвращаться к каталогам шаблонов по умолчанию.Но я должен убедиться, что он не сохраняется между запросами.

Если я добавлю каталог, настройки продолжат удерживать его между запросами?

.. и если да, то это правильное решение (проверка агента браузера, добавление папки дополнительного шаблона, а затем удалить его в конце каждого запроса)?

1 Ответ

2 голосов
/ 20 марта 2011

Динамическое изменение пути поиска шаблона - отличный способ справиться с этим. Нетрудно определить свой собственный загрузчик шаблонов и добавить его в TEMPLATE_LOADERS в settings.py. Сложной частью этого является обработка того факта, что вы можете работать в многопоточной среде, и у вас нет способа передать ваш запрос непосредственно загрузчику шаблонов.

Способ обойти это - сохранить запрос, флаг или просто каталоги для добавления к пути в локальной переменной потока и сослаться на эту локальную переменную потока из пользовательского загрузчика шаблонов. Вот сообщение в блоге о создании загрузчиков шаблонов, я могу ручаться за то, что это довольно просто и работает. Вот еще лучше о том, чтобы делать именно то, что вам нужно.

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

...