Подтвердить что ты не робот

Обнаружение мобильных телефонов, планшета или рабочего стола на Django

Im Junior django dev. Мне нужно обнаружить 3 типа устройств, планшета, мобильного телефона или рабочего стола. Я обнаружил script для обнаруженного мобильного телефона (https://github.com/macgera/macgera/blob/master/middleware.py), но как я могу обнаружить мобильный, планшет и рабочий стол?

Спасибо!

4b9b3361

Ответ 1

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

Поднимите порт 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 (для любых мобильных устройств).

Ответ 2

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

Ответ 4

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