【问题标题】:How to use different template for different browser如何为不同的浏览器使用不同的模板
【发布时间】:2010-10-29 21:45:21
【问题描述】:

我想为不同的(移动)浏览器提供我的 django 网站的特殊版本。 有什么可能的解决方案来做到这一点?

【问题讨论】:

标签: django django-templates


【解决方案1】:

在你看来,这样做

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

在你的模板中

{% 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 %}

【讨论】:

  • 没关系 :D 欢迎来到 SO
【解决方案2】:

最佳实践:使用minidetector 将额外信息添加到请求中,然后使用 django 的内置请求上下文将其传递给您的模板,就像这样。

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

然后在您的模板中,您可以引入以下内容:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多