Detecte o navegador móvel (não apenas o iPhone) em Python View
-
22-09-2019 - |
Pergunta
Eu tenho um aplicativo da web escrito no Django que possui uma página específica que gostaria de implementar uma versão móvel do modelo (e lógica ligeiramente diferente) para a qual. Eu gostaria de poder implementá -lo como este código 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)
Eu não tenho muito tempo e estou muito cedo na minha curva de aprendizado de codificação :) - Encontrei o que parece ser um aplicativo flugable muito poderoso chamado Bloom para obter capacidades de dispositivo móvel - http://code.google.com/p/django-bloom/wiki/bloomdeviceNo entanto, parece fazer uma solicitação via JSON para obter muitas especificações de dispositivo que eu não preciso, o que me parece um pouco ineficiente.
Alguém tem um método mais simples sugerido? Minha detecção não precisa ser 100%, apenas dispositivos para iPhone, iPod, Android e mainstream ...
A string http_user_agent tem algum tipo de sinalização móvel que eu posso verificar?
Solução
Atualizar:
Acabei de encontrar: http://code.google.com/p/minidetector/
O que parece fazer exatamente o que eu quero, vou testar agora. Sinta -se à vontade para me dizer que estou errado!
Outras dicas
Melhor prática: Use Minidetector Para adicionar as informações extras à solicitação, use o contexto de solicitação incorporado do Django para transmiti -la aos seus modelos assim.
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))
Então, em seu modelo, você pode apresentar coisas 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>
Vá para o garfo de MinideteCor chamado Django-Mobi, inclui documentação sobre como usá-lo.