BorrowBits - ciencia y tecnología

Cómo detectar un dispositivo móvil en Django con Mobi

Django python mobile móvil
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, 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

[python]MIDDLEWARE_CLASSES[/python]

y añadir la siguiente línea (ojo con respetar la sintaxis):

[python](…,
mobi.MobileDetectionMiddleware,)[/python]

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:

[python]from mobi.decorators import detect_mobile[/python]

2) El contenido de request.mobile será True si el navegador del dispositivo que llama a la función es móvil, y viceversa.

[python] @detect_mobile
def miDetector(request):
if request.mobile:
#Hacer cosas para dispositivos moviles
else:
#Hacer cosas para otros dispositivos
[/python]

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:

[python]MOBI_DETECT_TABLET = True[/python]

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:

[python]MIDDLEWARE_CLASSES[/python]

2) Añadir la siguiente línea:

[python](…
mobi.MobileRedirectMiddleware,)[/python]

3) Añadir una nueva constante de configuración al mismo archivo settings.py:

[python]MOBI_REDIRECT_URL = "http://URL.mobi"[/python]

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.

Angel

Siempre quise ser inventor y escritor: por lo primero me hice ingeniero, y en cuanto a lo segundo, escribo aquí de vez en cuando sobre telecomunicaciones y tecnología. Me gustan los robots, los perretes y los libros (analógicos).

Un comentario

  • 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, ……

Suscríbete

¡Sácale el máximo partido a BBits!

Introduce tu dirección de correo electrónico para seguir este Blog y recibir por email las nuevas publicaciones, si has leído y aceptas las Políticas de Privacidad, Cookies y Aviso Legal.

Recíbelo gratis al suscribirte

Webs amigas

  • Frikilogia.- Blog Multi-Tematico orientado a todos los campos del frikismo.
  • Meridiem90.tv.- Mira la TV gratis en HD. Canal Plus y Gol TV, todo el futbol desde tu navegador.
  • JITKey.- Startup enfocada en la gestión de alojamientos turísticos.

Bits del pasado

Síguenos en FB