在我们的项目中,我们有许多不同的模板供客户选择(用于他们的网上商店)。文件布局是这样的:
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文件夹,但我正在寻找一种让它独立的方法。
答案 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" %}