Koe*_*Bok 3 python django templates
在我们的项目中,我们有一堆不同的模板供客户选择(用于他们的网上商店)。文件布局是这样的:
templates
cart.html
closed.html
head.html
standard
bishop
default
indiana
marley
mocca
nihilists
raconteurs
tripwire
Run Code Online (Sandbox Code Playgroud)
standard的每个子文件夹都包含一些模板文件,如base.html、browse.html和item.html。Browse 和 Item 继承自 base。
我想要做的是将浏览模板呈现在与我的应用程序中的任何其他全局模板路径设置隔离的特定模板文件夹(假设为 templates/standard/bishop)中。有没有办法做到这一点?
更新:我会尽量说得更清楚。如果我只是从 bishop 子文件夹中渲染 browser.html,它会尝试扩展 base.html 但找不到它。我可以更改设置模板路径以包含 bishop 文件夹,但我正在寻找一种方法使其能够正常工作,而不用管它。
在您的 templates/standard/bishop/browse.html 模板中,您正在执行以下操作:
{% extends "base.html" %}
Run Code Online (Sandbox Code Playgroud)
这是指templates/base.html而不是templates/standard/bishop/base.html。默认情况下,Django 将检查您安装的应用程序以及您在 settings.py 中的 TEMPLATE_DIRS 下指定的模板目录。
此行为由 settings.py 中的 TEMPLATE_LOADERS 指定:
您也许可以通过创建自己的模板加载器来完成您想要做的事情,否则只需指定 base.html 的实际路径:
{% extends "standard/bishop/base.html" %}
Run Code Online (Sandbox Code Playgroud)