两个应用程序从Django中的相同base.html扩展

时间:2016-04-02 14:09:42

标签: django

我有两个应用程序。两者都有index.html扩展的不同base.html模板。 index.html在每个应用程序上都有所不同。

但由于某种原因,它只能从base.html的同一个应用程序扩展?这怎么可能?

这就是我在我的两个index.html模板中的外观:

{% extends 'base.html' %}

1 个答案:

答案 0 :(得分:1)

您的template/目录结构是如何设置的?如果index.html模板从base.html扩展,Django将选择根模板目录中的base.html

解决方案: 将您的base.html模板之一重命名为base2.html并将其放在templates/旁边base1.html,或在templates/中创建新目录以放置base.html 1}}文件到。

对于解决方案A,请务必在相应的{% extends base.html %}模板中将{% extends base2.html %}更改为index.html

对于解决方案B,您的base.html文件将保持相同的名称,但位于不同的目录中。一个是templates/base1/base.html,另一个是templates/base2/base.html。您的index.html文件会扩展为{% extends base1/base.html %}{% extends base2/base.html %}。请注意,所有扩展路径都相对于所选模板目录的根目录。

IMO解决方案B更好,因为它将每个模板库的代码分成不同的,明确命名的文件夹。更好的组织/灵活性,以及​​将来更少的混淆。