【发布时间】:2011-04-27 10:29:53
【问题描述】:
如果您想覆盖 django 中应用程序附带的模板(在 app/templates/app/ 中),您可以在另一个目录中创建一个同名模板,模板加载器会在应用程序的模板目录之前检查该模板。如果您只想覆盖模板的某些块,您还必须复制整个模板并更改该块,这实际上不是很干。
有没有人知道一种方法来覆盖原始模板,同时扩展它,以便您只需覆盖您想要更改的特定块? (这样做没有更改模板的名称,因为在某些情况下您可能必须更改视图以使其与另一个模板一起使用)
编辑:正如 Adam Taylor 在来自 Django 1.9 on 的 cmets 中指出的那样,这在没有任何黑客攻击的情况下是可能的。
【问题讨论】:
-
@paulo:据我所知,当然有关于覆盖应用程序模板的文档,因为这是日常实践,但我从未见过任何关于扩展同名模板的内容。如果您知道它在文档中,请指向那个地方...
-
那里的方法仅适用于特定于应用程序的管理模板,因为这些模板与原始模板不同。我猜这就是为什么这是在 admin 文档中而不是在一般文档中的原因;)
-
致所有使用 Django 1.9+ 的人:现在已内置于 Django。来自the "Templates" section of the Django 1.9 release notes 的引用:“Django 模板加载器现在可以递归地扩展模板。”
-
@AdamTaylor 谢谢,这对隐藏在发行说明中的有趣功能很有帮助。