我最近才开始使用 Django,并假设这个问题必须有一个好的解决方案!
通过 pip 安装 django-allauth 后,它尝试base.html
从我的project/templates
文件夹而不是它自己的子目录扩展。该用户遇到了同样的问题,并被告知重命名其中一个base.html
文件,然后在相关应用模板中更新对其的所有引用。对于复杂的应用程序(已经很糟糕),这很容易出错;如果多个第三方应用程序各自定义自己的应用程序base.html
并将其简称为{% extends 'base.html' %}
. 此外,我认为这仅适用于第三方应用程序,因为我可以轻松地将 base.html 命名为我自己的每个应用程序的不同名称,但我不想弄乱有效的第三方应用程序。
我的问题是:是否有一种安全/简单的方法可以让多个第三方应用程序使用{% extends 'base.html' %}
而不会发生冲突?
我已阅读 Django 中模板继承的文档并了解:
- 默认情况下,模板首先从文件系统加载,然后从应用子目录加载。因此
projects/templates
,在我的设置中定义的目录TEMPLATE_DIRS
将首先被调用;因此 django-allauth 问题。 - 我可以通过更改
TEMPLATE_LOADERS
. 但是,这只是意味着我的网站现在将扩展错误的base.html
.
尽管我可以通过重命名 allauth 的base.html
asallauthbase.html
并将子模板引用更改为 来修复当前的冲突{% extends 'allauthbase.html' %}
,但这似乎很笨重。
最奇怪的是,这个人抱怨每个应用程序默认扩展了自己的 base.html,但这似乎是不可能的......