我有两个应用程序。两者都有index.html扩展的不同base.html模板。 index.html在每个应用程序上都有所不同。
但由于某种原因,它只能从base.html的同一个应用程序扩展?这怎么可能?
这就是我在我的两个index.html模板中的外观:
{% extends 'base.html' %}
答案 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更好,因为它将每个模板库的代码分成不同的,明确命名的文件夹。更好的组织/灵活性,以及将来更少的混淆。