Python Django allauth加载错误的base.html模板
我已经试着让django allauth工作了几天,我终于发现了到底发生了什么 该应用程序没有加载随django allauth一起安装的Python Django allauth加载错误的base.html模板,python,django,django-allauth,Python,Django,Django Allauth,我已经试着让django allauth工作了几天,我终于发现了到底发生了什么 该应用程序没有加载随django allauth一起安装的base.html模板,而是加载我在网站其余部分使用的base.html文件 如何告诉django allauth使用virtualenv/lib/python2.7/sitepackages/django allauth目录中的base.html模板而不是我的project/template目录?除非直接调用,否则您的base.html是您定义的模板的扩展
base.html
模板,而是加载我在网站其余部分使用的base.html
文件
如何告诉django allauth使用
virtualenv/lib/python2.7/sitepackages/django allauth
目录中的base.html模板而不是我的project/template
目录?除非直接调用,否则您的base.html
是您定义的模板的扩展
例如,如果您呈现一个名为Page.html
-的模板,则顶部将显示{%extends“base.html”%}
如上文所述定义时,base.html
位于settings.py
中TEMPLATE_DIRS=()
下定义的路径中,根据您的描述,该路径定义为project/TEMPLATE
最好将django allauthbase.html
文件复制到定义的TEMPLATE\u DIRS
位置,将其重命名为allauthbase.html
,然后通过{%extends“allauthbase.html%}扩展模板以包含它而不是默认的base
或者,您可以向模板位置添加一个子文件夹,如project/template/allauth
,将allauthbase.html
放在那里,然后使用{%extends“allauth/base.html”%}
两年后,这仍然是一个问题,并且公认的答案缺少一些新信息
在上,我发现所有allauth模板都派生自account/base.html,它派生自base.html。我的解决办法是:
- 在
virtualenv/lib/python2.7/sitepackages/django allauth/templates
中,复制base.html
的全部内容以替换account/base.html
中的所有内容(即替换{%extends'base.html%}
语句)
- 删除allauth的
base.html
。它现在是多余的
完成了 django allauth
模板似乎扩展了account/base.html
(),它扩展了base.html
因此,请复制到例如myapp/templates/account/base.html
,并确保myapp
在django-allauth
之前加载(将其放在安装的应用程序中的较高位置)
现在django auth模板将扩展您的account/base.html
,它将是django allauth
的base.html
它并不完美,因为django allauth的base.html
可能会更新,而您将错过这些更新。但这似乎比重命名所有导入或更改django allauth代码要好
请注意,您也可以在内容周围的base.html
中放置一个{%block content%}
,然后django allauth
将使用该样式,这在许多情况下似乎是一件好事。allauth
尝试扩展myproject/templates/base.html
。最简单的方法是将base.html
移动到myproject/templates/site/
,以获得myproject/templates/site/base.html
,或者简单地重命名base.html
所有提供的答案都会迫使您重写文件并修改自己的项目以适应allauth,这是一个完全不可接受的工作流。这样的第三方应用程序不应该对您自己的项目具有如此大的操纵力
确实,处理这种情况的最简单方法,尤其是根据提供的答案,就是简单地将allauth应用程序及其相关应用程序移动到settings.py
文件中INSTALLED_apps
列表的末尾。Django会先找到你的base.html
模板,然后再在下面列出的其他应用程序中找到另一个base.html
模板
问题解决。我遇到了相反的问题:我试图使用自己的base.html
文件,但我的Django项目正在获取Django allauth
版本的base.html
。事实证明,在settings.py
中定义已安装的应用程序的顺序会影响模板的呈现方式。为了让mybase.html
呈现而不是django allauth
中定义的呈现,我需要定义已安装的应用程序,如下所示:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# custom
'common',
'users',
'app',
# allauth
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
对。在我可以吻你的时候,我不明白这些事情。你救了我,让我不至于抛弃阿卢斯!