Django从特定目录继承加载模板

时间:2010-02-15 14:27:08

标签: python django templates

在我们的项目中,我们有许多不同的模板供客户选择(用于他们的网上商店)。文件布局是这样的:

templates
    cart.html
    closed.html
    head.html
    standard
        bishop
        default
        indiana
        marley
        mocca
        nihilists
        raconteurs
        tripwire

标准的每个子文件夹都包含一些模板文件,例如base.html,browse.html和item.html。 Browse和Item继承自base。

我想要做的是渲染特定模板文件夹中的浏览模板(假设模板/标准/主教)与我的应用程序中的任何其他全局模板路径设置隔离。有没有办法做到这一点?

更新:我会尽量更清楚。如果我只是从bishop子文件夹中渲染browse.html,它会尝试扩展base.html并且找不到它。我可以改变设置模板路径以包含bishop文件夹,但我正在寻找一种让它独立的方法。

1 个答案:

答案 0 :(得分:4)

在您的templates / standard / bishop / browse.html模板中,您正在执行以下操作:

{% extends "base.html" %}

这指的是 templates / base.html ,而不是 templates / standard / bishop / base.html 。默认情况下,Django将检查您安装的应用程序以及您在settings.py中的TEMPLATE_DIRS下指定的模板目录。

此行为由settings.py中的TEMPLATE_LOADERS指定:

您可以通过创建自己的模板加载器来逃避您尝试做的事情,否则只需指定base.html的实际路径:

{% extends "standard/bishop/base.html" %}