Измените шаблоны Django на основе агента пользователя

да, как указано выше ...

Я напишу только пример:

>>> a = open('file.txt')
>>> a.read()
#output
>>> a.seek(0)
>>> a.read()
#same output
40
задан 3 revs, 2 users 100% 11 January 2009 в 17:07
поделиться

8 ответов

Вместо того, чтобы изменять шаблонные каталоги динамично, Вы могли изменить запрос и добавить значение, которое сообщает Вашему представлению, если пользователь находится на iPhone или нет. Тогда оберните render_to_response (или независимо от того, что Вы используете для создания объектов HttpResponse) захватить версию iPhone шаблона вместо стандартной версии HTML, если они используют iPhone.

20
ответ дан afarnham 12 November 2019 в 12:42
поделиться
4
ответ дан Swaroop C H 12 November 2019 в 12:42
поделиться

Я разрабатываю djangobile, django мобильное расширение: http://code.google.com/p/djangobile/

3
ответ дан 12 November 2019 в 12:42
поделиться

Необходимо смотреть на исходный код django-mobileadmin , который решил точно эту проблему.

2
ответ дан ak. 12 November 2019 в 12:42
поделиться

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

Django Book имеет раздел по этому предмету .

2
ответ дан zgoda 12 November 2019 в 12:42
поделиться

Существует хорошая статья, которая объясняет, как представить те же данные различными шаблонами http://www.postneo.com/2006/07/26/acknowledging-the-mobile-web-with-django

, все еще необходимо автоматически перенаправить пользователя на мобильный сайт однако, и это может быть сделано с помощью нескольких методов (прием check_mobile будет работать также)

2
ответ дан Amit 12 November 2019 в 12:42
поделиться

Как насчет того, чтобы перенаправить пользователя на i.xxx.com после парсинга его UA в некотором промежуточном программном обеспечении? Я высоко сомневаюсь, что мобильные пользователи заботятся, как URL похож, тем не менее они могут получить доступ к Вашему сайту с помощью основного URL.

1
ответ дан Dmitry Shevchenko 12 November 2019 в 12:42
поделиться

Определяем user agent в middleware, переключаем привязки url, профит!

Как? Объекты запросов Django имеют атрибут .urlconf, который может быть установлен промежуточным ПО.

Из документации django:

Django определяет корневой URLconf модуль для использования. Как правило, это значение параметра ROOT_URLCONF, но если входящий объект HttpRequest имеет атрибут urlconf (установленный обработкой запроса промежуточным ПО), его значение будет использовано вместо ROOT_URLCONF.

  1. В файле yourproj/middlware.py напишите класс, который проверяет строку http_user_agent:

    import re
    MOBILE_AGENT_RE=re.compile(r".*(iphone|mobile|androidtouch)",re.IGNORECASE)
    class MobileMiddleware(object):
     def process_request(self,request):
     if MOBILE_AGENT_RE.match(request.META['HTTP_USER_AGENT']):
     request.urlconf="yourproj.mobile_urls"
    
  2. Не забудьте добавить это в MIDDLEWARE_CLASSES в settings.py:

    MIDDLEWARE_CLASSES= [...
     'yourproj.middleware.MobileMiddleware',
    ...]
    
  3. Создаем мобильный urlconf, yourproj/mobile_urls.py:

    urlpatterns=patterns('',('r'/?$', 'mobile.index'), ...)
    
12
ответ дан 27 November 2019 в 01:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: