我有一个用Django编写的Web应用程序,它有一个特定的页面,我想实现模板的移动版本(和稍微不同的逻辑)。我希望能够实现这个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)
我没有大量的时间,而且我的编码学习曲线很早就开始了:) - 我发现了一个非常强大的可插拔应用程序,名为bloom,用于获取移动设备功能 - {{3 }} 但是它似乎通过JSON发出请求以获得我不需要的大量设备规格,这对我来说似乎有点低效。
有没有人建议更简单的方法?我的检测不需要100%,只需要iPhone,iPod,Android和主流设备......
http_user_agent字符串是否有某种我可以检查的移动标记?
答案 0 :(得分:19)
答案 1 :(得分:15)
最佳做法:使用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>
答案 2 :(得分:7)
转到名为django-mobi的minidetecor的分支,它包含有关如何使用它的文档。