Cuando estamos programando una aplicación web es probable que necesitemos distinguir si el usuario se conecta desde su dispositivo móvil (tablet, smartphone, iphone, etc) o desde un PC. En función de ello podremos segmentar operaciones y vistas.
En Django existen múltiples formas de hacerlo. La más básica consistiría en extraer el Cliente de Usuario (User-Agent) y cotejarlo. Demasiado tedioso.
La mejor opción desde mi punto de vista es utilizar un middleware llamado django-mobi.
En Django, un middleware no es más que una especie de plugin escrito en Python que realiza ciertas tareas de bajo nivel sin que el programador tenga que esforzarse demasiado. Lo que en mi pueblo denominan «framework».
Como decía, Mobi permite detectar teléfonos móviles, tablets y pantallas pequeñas de forma muy sencilla.
Instalación paso a paso
1) Descargar el paquete django-mobi disponible aquí.
2) Descomprimir la carpeta Mobi en la raíz de nuestro proyecto.
3) Localizar en el archivo de configuración settings.py la tupla de middlewares
MIDDLEWARE_CLASSES
y añadir la siguiente línea (ojo con respetar la sintaxis):
(..., mobi.MobileDetectionMiddleware,)
4) Importar dentro del archivo views.py o en la vista necesaria.
Ya está. Ahora veremos algunos casos de uso:
Distinción simple entre móvil, tablet y PC
Tan sencillo como obtener una variable cuyo valor sea True si es un dispositivo móvil o False si es cualquier otro tipo de dispositivo. La mecánica es la siguiente:
1) Importamos el método necesario para este caso particular:
from mobi.decorators import detect_mobile
2) El contenido de request.mobile será True si el navegador del dispositivo que llama a la función es móvil, y viceversa.
@detect_mobile def miDetector(request): if request.mobile: #Hacer cosas para dispositivos moviles else: #Hacer cosas para otros dispositivos
También hay una forma de distinguir entre tablet o móvil. Consiste en utilizar un request.tablet igual que anteriormente hicimos con request.mobile. Para ello es necesario incluir la siguiente variable en el archivo de configuración settings.py:
MOBI_DETECT_TABLET = True
Cómo redirigir automáticamente hacia una versión mobile
Nada más simple. Lo que hay que hacer es:
1) De nuevo, abrir el archivo settings.py y localizar la tupla:
MIDDLEWARE_CLASSES
2) Añadir la siguiente línea:
(... mobi.MobileRedirectMiddleware,)
3) Añadir una nueva constante de configuración al mismo archivo settings.py:
MOBI_REDIRECT_URL = "http://URL.mobi"
Donde http://URL.mobi es la URL de la web a donde quieres redirigir en caso de detectar un dispositivo móvil.
Hasta aquí este minitutorial. No dudéis en preguntarnos cualquier cosa.
Información Bitacoras.com…
Valora en Bitacoras.com: Esta NO es la forma correcta de detectar un móvil con Django… Cuando estamos programando una aplicación web es probable que necesitemos distinguir si el usuario se conecta desde su dispositivo móvil (tablet, smartphone, ……