Pregunta Detecta el navegador móvil (no solo iPhone) en la vista python


Tengo una aplicación web escrita en Django que tiene una página específica para la que me gustaría implementar una versión móvil de la plantilla (y una lógica ligeramente diferente) para. Me gustaría poder implementarlo a este código de sudo:

def(myView)

  do some stuff

  if user-is-on-a-mobile-device:
     do some stuff
     return (my mobile template)

  else:
     do some stuff
     return (my normal template)

No tengo una gran cantidad de tiempo y estoy bastante adelantado en mi curva de aprendizaje de codificación :) - Encontré lo que parece ser una aplicación enchufable muy poderosa llamada bloom para obtener capacidades de dispositivos móviles - http://code.google.com/p/django-bloom/wiki/BloomDevice Sin embargo, parece hacer una solicitud a través de JSON para obtener muchas especificaciones de dispositivos que no necesito, lo que me parece un poco ineficiente.

¿Alguien tiene un método sugerido más simple? Mi detección no necesita ser 100%, solo iPhone, iPod, Android y dispositivos convencionales ...

¿La cadena http_user_agent tiene algún tipo de indicador móvil que pueda verificar?


32
2018-02-23 19:47


origen


Respuestas:


Actualizar:

Acabo de encontrar: http://code.google.com/p/minidetector/

Que parece hacer exactamente lo que quiero, voy a probar ahora. ¡Siéntete libre de decirme que estoy equivocado!


19
2018-02-23 19:50



mejor práctica: uso minidetector para agregar la información adicional a la solicitud, luego use el contexto de solicitud incorporado de django para pasarlo a sus plantillas de esa manera.

from django.shortcuts import render_to_response
from django.template import RequestContext

def my_view_on_mobile_and_desktop(request)
    .....
    render_to_response('regular_template.html', 
                       {'my vars to template':vars}, 
                       context_instance=RequestContext(request))

luego en su plantilla puede introducir cosas como:

<html>
  <head>
  {% block head %}
    <title>blah</title>
  {% if request.mobile %}
    <link rel="stylesheet" href="{{ MEDIA_URL }}/styles/base-mobile.css">
  {% else %}
    <link rel="stylesheet" href="{{ MEDIA_URL }}/styles/base-desktop.css">
  {% endif %}
  </head>
  <body>
    <div id="navigation">
      {% include "_navigation.html" %}
    </div>
    {% if not request.mobile %}
    <div id="sidebar">
      <p> sidebar content not fit for mobile </p>
    </div>
    {% endif %>
    <div id="content">
      <article>
        {% if not request.mobile %}
        <aside>
          <p> aside content </p>
        </aside>
        {% endif %}
        <p> article content </p>
      </aricle>
    </div>
  </body>
</html>

15
2017-11-11 07:48



vaya a la bifurcación de minidetecor llamada django-mobi, incluye documentación sobre cómo usarla.

https://pypi.python.org/pypi/django-mobi


7
2018-03-19 14:50