【问题标题】:django view/template redirection for mobile browsers移动浏览器的 django 视图/模板重定向
【发布时间】:2011-03-20 04:07:27
【问题描述】:

不确定是否有人有过使用 django 专门为移动设备呈现模板的良好解决方案的经验。

我编写了一个中间件请求处理器,它使用正则表达式来检测它是否是移动浏览器。我目前正在为请求设置一个布尔属性,以便我可以在管道中进一步使用它。但实际上我的业务逻辑是一样的,我只是想使用一组不同的模板。

有没有办法让我在中间件处理器中的 settings.TEMPLATE_DIRS 中添加一个新的模板目录,以便移动用户可以获得我选择重写的视图,但其他所有内容都会退回到默认模板目录。但我需要确保它不会在请求之间持续存在。

如果我添加了一个目录,设置会在请求之间继续保留它吗?

..如果是这样,这是正确的解决方案吗(检查浏览器代理,添加一个额外的模板文件夹,然后在每个请求结束时将其删除)?

【问题讨论】:

    标签: django mobile user-agent


    【解决方案1】:

    动态修改模板搜索路径是处理此问题的好方法。定义自己的模板加载器并将其添加到 settings.py 中的 TEMPLATE_LOADERS 并不难。棘手的部分是处理您可能在多线程环境中运行的事实,并且您无法将请求直接传递给模板加载器。

    解决方法是将请求、标志或简单的目录存储到线程局部变量中的路径中,并从自定义模板加载器中引用该线程局部变量。这是关于创建模板加载器的blog post,我可以保证它非常简单且有效。这是一个even better one,关于做你需要的事情。

    我想我没有特别指出您可能不想尝试更改 settings.TEMPLATE_DIRS 每个请求,您最多会得到奇怪的结果。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 2013-03-09
    • 2015-08-10
    • 2022-12-11
    相关资源
    最近更新 更多