Detect mobile browser (not just iPhone) in python view

后端 未结 3 808
说谎
说谎 2020-12-23 17:04

I have a web application written in Django that has one specific page I\'d like to implement a mobile version of the template (and slightly different logic) for. I\'d like t

相关标签:
3条回答
  • go for the fork of minidetecor called django-mobi, it includes documentation on how to use it.

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

    0 讨论(0)
  • 2020-12-23 17:38

    Update:

    I just found: http://code.google.com/p/minidetector/

    Which seems to do exactly what I want, I'm going to test now. Feel free to tell me i'm wrong!

    0 讨论(0)
  • 2020-12-23 17:52

    best practice: use minidetector to add the extra info to the request, then use django's built in request context to pass it to your templates like so.

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

    then in your template you are able to introduce stuff like:

    <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>
    
    0 讨论(0)
提交回复
热议问题