Обнаружить мобильный, планшет или рабочий стол на Django - PullRequest
19 голосов
/ 03 февраля 2012

Я младший django Дев.

Мне нужно обнаружить 3 типа device, tablet, mobile или desktop.

Я нахожу скрипт для обнаруженного мобильного на github , но как я могу обнаружить мобильный телефон, планшет и рабочий стол?

Спасибо!

Ответы [ 4 ]

33 голосов
/ 19 июня 2012

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

Выберите порт Python для MobileESP (исходный код здесь) (спасибо Мариушу Месяку за рекомендацию) и поместите его в папку с именем mobileesp в основании вашего проекта (где manage.py). Добавьте пустой файл __init__.py, чтобы Python увидел его как пакет.

Создайте новый файл middleware.py в этом каталоге и заполните его:

import re
from mobileesp import mdetect

class MobileDetectionMiddleware(object):
    """
    Useful middleware to detect if the user is
    on a mobile device.
    """
    def process_request(self, request):
        is_mobile = False
        is_tablet = False
        is_phone = False

        user_agent = request.META.get("HTTP_USER_AGENT")
        http_accept = request.META.get("HTTP_ACCEPT")
        if user_agent and http_accept:
            agent = mdetect.UAgentInfo(userAgent=user_agent, httpAccept=http_accept)
            is_tablet = agent.detectTierTablet()
            is_phone = agent.detectTierIphone()
            is_mobile = is_tablet or is_phone or agent.detectMobileQuick()

        request.is_mobile = is_mobile
        request.is_tablet = is_tablet
        request.is_phone = is_phone

Наконец, обязательно включите 'mobileesp.middleware.MobileDetectionMiddleware', в MIDDLEWARE_CLASSES в файле настроек.

Имея это в своих представлениях (или в любом месте, где у вас есть объект запроса), вы можете выбрать is_phone (для любых современных смартфонов), is_tablet (для современных планшетов) или is_mobile (для любых мобильные устройства вообще).

5 голосов
/ 07 марта 2012

Посмотрите на MobileESP . Недавно он был портирован на Python для каркаса веб-приложения Django. Он может обнаруживать различные классы и уровни устройств (включая смартфоны, планшеты).

1 голос
/ 03 февраля 2012

Если вам нужно какое-то быстрое и простое решение, вы можете попробовать javascript для обнаружения трубки , который позволяет создавать простые правила перенаправления.

0 голосов
/ 14 апреля 2016

Я искал что-то подобное и наткнулся на django-mobile , который делает именно это. (Я знаю, что этот вопрос очень старый, и человек, который его опубликовал, вероятно, уже является старшим разработчиком Django, но, возможно, это может помочь людям, которые ищут его в эти дни).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...