gpt4 book ai didi

python - 基于 User-Agent 更改 Django 模板

转载 作者:IT老高 更新时间:2023-10-28 21:37:59 24 4
gpt4 key购买 nike

我创建了一个 Django 站点,但我喝了 Koolaid,我想创建一个 IPhone 版本。经过深思熟虑,我想出了两个选择:

  1. 创建一个完整的其他网站,例如 i.xxxx.com。使用 Django 的站点框架将其绑定(bind)到同一个数据库中。
  2. 找一些中间件读取用户代理,并动态更改模板目录。

不过,我真的更喜欢选项 #2;我有一些保留,主要是因为 Django 文档 discourages changing settings on the fly .我找到了 snippet那会做我想要的。我的主要问题是让它尽可能无缝,我希望它对用户来说是自动的和透明的。

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

更新

我结合了中间件和调整模板调用。

对于中间件,我使用了 minidetector .我喜欢它,因为它检测到 plethora移动用户代理。我所要做的就是在我的 View 中检查 request.mobile。

对于模板调用调整:

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

我将它用于我知道我有两个版本的任何 View 。

待办事项:

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

最佳答案

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

关于python - 基于 User-Agent 更改 Django 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/164427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com