动态TEMPLATE_DIRS

时间:2015-09-20 14:28:12

标签: python django

我希望能够拥有模板所在的动态目录。让我解释一下我的意思。我有一个具有这种文件结构的应用程序system

\proj
    __init__.py
    settings.py
    urls.py
    ...
\system
    __init__.py
    models.py
    views.py
    urls.py
    \modules
        \module_1
            __init__.py
            models.py
            views.py
            urls.py
            \templates     ## Attention
                one.html
                two.html
        \module_2
            __init__.py
            modules.py
            \templates    ##
                three.html
                four.html
        ...
        \module_N
            ...

正如你所看到的那样,有一个modules文件夹,其中包含“原子”模块,在某种意义上它们具有所有必需的文件,包括一个地方的模板。因此module_1有一个带有tempaltes的模板文件夹,module_2有一个模板文件夹,所有其他模块都有自己的模板文件夹。我想要的是能够在我的settings.py文件中引用这些模板文件夹,这样当我将一个全新的模块上传到模块文件夹时,我就不必更改这个settings.py文件了。所以我的问题是,如何动态构建TEMPLATE_DIRS变量:

TEMPLATE_DIRS = (
    ## how to implement this???
)

修改

我在考虑另一种方法。首先,将我的模块转换为dinamic应用程序,如this

MODULES_DIR = 'system/modules'

for item in os.listdir(MODULES_DIR):
    if os.path.isdir(os.path.join(MODULES_DIR, item)):
        app_name = 'system.modules.%s' % item
        INSTALLED_APPS += (app_name, )

然后做一些事情让Django在所有应用程序的文件夹中查找模板。但我不确定它是否有效,我怎样才能完成这项任务。

1 个答案:

答案 0 :(得分:1)

这只是特定于应用的模板,已由模板设置dict中的APP_DIRS flag提供。不应该是任何其他配置。