我做了一个Django 网站,但是我喝了库莱德,我想做一个IPhone版本.经过深思熟虑后,我提出了两个 Select :

  1. 创建一个完整的其他站点,比如i.xxxx.通用域名格式.使用Django的sites框架将其绑定到同一个数据库中.
  2. 找一段时间的中间件来读取用户代理,并动态更改模板目录.

然而,我真的更喜欢选项2;我有一些保留意见,主要是因为Django文档discourages changing settings on the fly.我找到了一个snippet,可以做我想做的事.我的主要问题是让它尽可能无缝,我希望它是自动和透明的用户.

有没有其他人遇到过同样的问题?有没有人愿意分享他们是如何处理制作Django网站的iPhone版本的?

Update

我采用了中间件和调整模板调用的组合.

对于中间件,我使用了minidetector.我喜欢它,因为它能检测到plethora个移动用户代理.我所要做的就是核对申请.在我看来是移动的.

对于模板调用调整:

 def check_mobile(request, template_name):
     if request.mobile:
         return 'mobile-%s'%template_name
     return template_name

我将它用于任何我知道我有两个版本的视图.

TODO:

  • 了解如何在render_to_response的扩展版本中访问request.mobile,这样我就不必使用check_mobile('template_name.html')
  • 如果不存在移动版本,则使用之前的自动回退到常规模板.

推荐答案

您可以修改请求并添加一个值,让视图知道用户是否在iphone上,而不是动态更改模板目录.然后包装render_to_response(或用于创建HttpResponse对象的任何东西),以获取模板的iphone版本,而不是使用iphone的标准html版本.

Django相关问答推荐

Django 5.0.2:TypeError:获取切片后无法过滤查询

Django-将html数据保存到quillfield中

Django REST序列化程序TO_REATION失败

Django allauth 社交帐户注册中邮箱的模板变量

如何从基于类的视图将用户保存在 django 模型中

如果字段为空,则 Unique_together 不起作用.怎么约束呢?

django 的 Manager.create() 方法有什么作用?

如何重命名标准 django-registration 模板的名称

Django 模板上的 URL 编码

文档中的 Mongoengine creation_time 属性

如何在 django 中生成 url

在 Django 的 ORM 中访问存储过程的最佳方法是什么

如何在 Django 测试框架中修改会话

目前使用 Django Evolution,South是否更好,值得切换?

Django:创建索引:非唯一,多列

related_name 参数在 Django 模型中没有按预期工作?

过滤 Django 数据库中包含数组中任何值的字段

Django unique_together 与可为空的 ForeignKey

警告:找不到分发的 svn 位置==0.6.16dev-r0

Heroku & Django:OSError: No such file or directory:'/app/{myappname}/static'