【问题标题】:Django Loading Templates with Inheritance from Specific DirectoryDjango 加载具有特定目录继承的模板
【发布时间】:2011-01-17 00:21:51
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 不清楚您所说的“与我的应用程序中的任何其他全局模板路径设置隔离”是什么意思。从任何路径渲染模板都很容易。具体来说,您需要做什么?
  • 子文件夹中的模板应该能够通过 {% extends "base.html" %} 扩展父文件夹中的基本模板。你确定你的 base.html 存在吗?

标签: python django templates


【解决方案1】:

在您的 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" %}

【讨论】:

    猜你喜欢
    • 2014-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 2013-01-09
    • 2010-12-23
    • 1970-01-01
    相关资源
    最近更新 更多