我做了一个 Django 网站,但我喝了 Koolaid,我想做一个iPhone版本。经过深思熟虑,我提出了两个选择:
- 制作一个完整的其他网站,例如 i.xxxx.com。使用 Django 的站点框架将其绑定到同一个数据库中。
- 找一些中间件读取用户代理,并动态更改模板目录。
但是,我真的更喜欢选项#2;我有一些保留意见,主要是因为 Django 文档不鼓励即时更改设置。我找到了一个可以做我想做的事情的片段。我的主要问题是让它尽可能无缝,我希望它对用户来说是自动的和透明的。
有没有其他人遇到过同样的问题?有人愿意分享他们是如何处理制作 Django 网站的 iPhone 版本的吗?
更新
我结合了中间件并调整了模板调用。
对于中间件,我使用了 minidetector。我喜欢它,因为它可以检测到大量的移动用户代理。我所要做的就是在我的视图中检查 request.mobile 。
对于模板调用调整:
def check_mobile(request, template_name):
if request.mobile:
return 'mobile-%s'%template_name
return template_name
我将它用于我知道我有两个版本的任何视图。
去做:
- 弄清楚如何在 render_to_response 的扩展版本中访问request.mobile,这样我就不必使用 check_mobile('template_name.html')
- 如果不存在移动版本,则使用以前的自动回退到常规模板。