Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detect mobile, tablet or Desktop on Django

Tags:

mobile

django

I need to detect 3 types of device: tablet, mobile or desktop.

I found a script for detecting mobile on github, but how I can detect mobile, tablet and desktop?

like image 677
macgera Avatar asked Feb 02 '12 20:02

macgera


3 Answers

Based on your prior use of mobile detection middleware, I'd recommend the following:

Pick up the Python port of MobileESP (source code here) and drop it into a folder named mobileesp in the base of your project (where manage.py is). Throw in a blank __init__.py file so that Python will see it as a package.

Go ahead and create a new file, middleware.py, in that directory, and fill it with:

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

Lastly, make sure to include 'mobileesp.middleware.MobileDetectionMiddleware', in MIDDLEWARE_CLASSES in your settings file.

With that in place, in your views (or anywhere that you have a request object) you can check for is_phone (for any modern smartphones), is_tablet (for modern tablets) or is_mobile (for any mobile devices whatsoever).

like image 86
Adam Luptak Avatar answered Feb 19 '23 03:02

Adam Luptak


Have a look at MobileESP. It has been recently ported to Python for Django web app framework. It can detect various classes and tiers of devices (including smatphones, tablets).

like image 44
Mariusz Miesiak Avatar answered Feb 19 '23 03:02

Mariusz Miesiak


If you want some quick and simple solution, you can try handset detection's javascript that enables you create simple redirection rules.

like image 43
Florante Valdez Avatar answered Feb 19 '23 03:02

Florante Valdez