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