使用Django项目在运行时动态添加到TEMPLATE_DIRS

时间:2010-11-19 23:27:29

标签: django

对于我正在研究的Django项目,我需要能够允许用户指定TEMPLATE_DIRS中使用的路径。这是为了实现可选择的“主题”。例如:

TEMPLATE_DIRS = (
    os.path.join(WEBSITE_ROOT, 'templates', THEME_NAME).replace('\\', '/'),
    os.path.join(WEBSITE_ROOT, 'templates', 'default').replace('\\', '/'),
)

但是THEME_NAME变量应该通过站点管理来自数据库。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

写一个template loader,你可以指向一个主题目录。

答案 1 :(得分:1)

我做过类似的事情,请看看https://github.com/ASKBOT/askbot-devel/blob/master/askbot/skins/loaders.py

除了模板加载器,您可能还需要解决特定于主题的媒体的方法。例如,它可以是模板标签或过滤器,它可以获取一些基本URL并添加主题前缀或类似内容,您也可以自动跟踪媒体版本。这样,当您刷新.js或其他文件时,客户端将必须加载最新版本。

答案 2 :(得分:0)

不确定这是否与我的问题theme switching, template and css file layout on a django site

相同

模板子目录可以设置为context var,用作扩展模板标记

的参数