根据用户代理更改Django模板
我已经创建了Django网站,但是我喝了Koolaid,并且想要创建 iPhone 版本。经过深思熟虑后,我提出了两种选择:
- 制作其他网站,例如i.xxxx.com。使用Django的站点框架将其绑定到同一数据库中。
- 寻找一些中间件来读取用户代理,然后动态更改模板目录。
但是,我真的更喜欢选项2。我有所保留,主要是因为Django文档不鼓励动态更改设置。我发现了一个片段,可以满足我的需求。我的主要问题是让它尽可能无缝,我希望它对用户是自动的和透明的。
还有其他人遇到同样的问题吗?有人愿意分享他们如何解决制作iPhone版本的Django网站的问题吗?
更新资料
我结合了中间件和调整模板调用。
对于中间件,我使用了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’)
- 如果不存在移动版本,则使用以前的版本自动退回到常规模板。