【发布时间】:2016-04-02 14:09:42
【问题描述】:
我有两个应用程序。两者都有 index.html 扩展的不同 base.html 模板。尽管每个应用程序的 index.html 都不同。
但由于某种原因,它只能从带有 base.html 的同一个应用程序扩展而来?这怎么可能?
在我的两个 index.html 模板中都是这样的:
{% extends 'base.html' %}
【问题讨论】:
标签: django
我有两个应用程序。两者都有 index.html 扩展的不同 base.html 模板。尽管每个应用程序的 index.html 都不同。
但由于某种原因,它只能从带有 base.html 的同一个应用程序扩展而来?这怎么可能?
在我的两个 index.html 模板中都是这样的:
{% extends 'base.html' %}
【问题讨论】:
标签: django
您的template/ 目录结构是如何设置的?如果index.html 模板扩展自base.html,Django 将选择您根模板目录中的base.html。
解决方案:
将您的base.html 模板之一重命名为base2.html 之类的名称并将其与base1.html 一起放入templates/,或者在templates/ 中创建新目录以放入base.html 文件。
对于解决方案 A,请确保在相应的 index.html 模板中将 {% extends base.html %} 更改为 {% extends base2.html %}。
对于解决方案 B,您的 base.html 文件将保持相同的名称,但位于不同的目录中。所以一个是templates/base1/base.html,另一个是templates/base2/base.html。您的index.html 文件将扩展为{% extends base1/base.html %} 和{% extends base2/base.html %}。请注意,所有扩展路径都相对于您选择的模板目录的根目录。
IMO 解决方案 B 更好,因为它将每个模板库的代码分隔到不同的、明确命名的文件夹中。将来为您提供更好的组织/灵活性和更少的混乱。
【讨论】: