我做了一个Django网站,但是我喝了koolide,我想做一个IPhone版本。经过深思熟虑,我想出了两个选择:
不过,我确实更喜欢选项2;我有一些保留意见,主要是因为Django文档discourages changing settings on the fly。我找到了一个snippet可以做我想做的事情。我的主要问题是尽可能无缝,我希望它是自动的和透明的用户。
有没有其他人遇到同样的问题?有谁愿意分享一下他们是如何制作IPhone版本的Django网站的?
更新
我使用了中间件和调整模板调用的组合。
对于中间件,我使用minidetector。我喜欢它,因为它检测到一个plethora移动用户代理。我所要做的就是在我的视图中检查request.mobile。
对于模板调用调整:
def check_mobile(request, template_name):
if request.mobile:
return 'mobile-%s'%template_name
return template_name
我用这个来做任何我知道我有两个版本的视图。
待办事项:
这篇文章可能很有用:Build a Mobile and Desktop-Friendly Application in Django in 15 Minutes
您可以修改请求并添加一个值,让视图知道用户是否在iphone上,而不是动态更改模板目录。然后包装render_to_response(或用于创建HttpResponse对象的任何东西)以获取模板的iphone版本,而不是使用iphone的标准html版本。
在中间件中检测用户代理,切换url绑定,获利!
怎么做?Django请求对象有一个.urlconf属性,可以由中间件设置。
来自django docs:
在yourproj/middlware.py中,编写一个检查http_user_代理字符串的类:
不要忘记将此添加到settings.py中的中间件类:
创建mobile urlconf,yourproj/mobile_urls.py:
相关问题 更多 >
编程相关推荐