Я создал сайт Django, но я выпил Koolaid, и я хочу сделать версию IPhone. После много размышлений я придумал два варианта:
- Сделайте еще один сайт, например i.xxxx.com. Свяжите его в той же базе данных, используя инфраструктуру сайтов Django.
- Найдите некоторое время промежуточного программного обеспечения, которое читает пользовательский агент, и динамически изменяет каталоги шаблонов.
Я бы предпочел вариант № 2; У меня есть некоторые оговорки, главным образом потому, что документация Django препятствует изменению настроек на лету. Я нашел snippet, который сделал бы то, что мне хотелось. Моя основная проблема заключается в том, чтобы сделать его максимально бесшовным, я бы хотел, чтобы он был автоматическим и прозрачным для пользователя.
Кто-нибудь еще сталкивается с той же проблемой? Кто-нибудь хотел бы рассказать о том, как они решали сделать IPhone-версии сайтов Django?
Обновление
Я пошел с комбинацией промежуточного программного обеспечения и настраивал вызов шаблона.
Для промежуточного программного обеспечения я использовал minidetector. Мне нравится, потому что он обнаруживает множество мобильных пользовательских агентов. Все, что мне нужно сделать, это проверить request.mobile в моих представлениях.
Для настройки тэга шаблона:
def check_mobile(request, template_name):
if request.mobile:
return 'mobile-%s'%template_name
return template_name
Я использую это для любого представления, которое я знаю, у меня есть обе версии.
TODO:
- Узнайте, как получить доступ к request.mobile в расширенной версии render_to_response, поэтому мне не нужно использовать check_mobile ('template_name.html')
- Использование предыдущего автоматического возврата к регулярному шаблону, если не существует мобильной версии.