2009-05-29 6 views
1

Je souhaite fournir des versions spéciales de mon site django pour différents navigateurs (mobiles). Quelles sont les solutions possibles pour cela?Comment utiliser un modèle différent pour un navigateur différent

+0

double possible de [Modifier Django modèles basés sur User-Agent] (http://stackoverflow.com/questions/164427/change-django-templates-based-on-user-agent) – Eduardo

+0

On dirait que cela a déjà été répondu ici: [http://stackoverflow.com/questions/164427/change-django-templates-based-on-user- agent] (http://stackoverflow.com/questions/164427/change-django-templates-based-on-user-agent) –

Répondre

1

À votre avis, ne smthg comme ce

def map(request, options=None, longitude=None, latitude = None): 
    if 'iPhone' in request.META["HTTP_USER_AGENT"]: 
     user_agent = 'iPhone' 
    elif 'MSIE' in request.META["HTTP_USER_AGENT"]: 
     user_agent ='MSIE' 
    else: user_agent='' 
    print user_agent 
    return render_to_response('map/map.html', 
     { 
      'user_agent': user_agent 
     }) 

et dans votre modèle

{% ifnotequal user_agent "iPhone" %} 
    {% ifequal user_agent "MSIE" %} 
     {% include 'map/map_ie.html' %} 
    {% else %} 
     {% include 'map/map_default.html' %} 
    {% endifequal %} 
{% else %} 
{% include 'map/map_iphone.html' %} 
{% endifnotequal %} 
+0

Je voudrais voter jusqu'à ... mais je ne peux pas encore – user114337

+0

ne pas question: D Bienvenue à SO – vikingosegundo

0

meilleures pratiques: utiliser minidetector pour ajouter l'information supplémentaire à la demande, puis utilisez construit dans la demande de django contexte pour le passer à vos modèles comme ça.

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)) 

alors dans votre modèle, vous êtes en mesure de présenter des choses comme:

<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> 
Questions connexes