我已经尝试让django-allauth工作了几天了,我终于发现了是怎么回事。
该应用程序加载的是我用于网站其余部分的base.html文件,而不是加载随django-allauth一起安装的base.html模板。
如何告诉django-allauth使用virtualenv/lib/python2.7/sitepackages/django-allauth目录中的base.html模板,而不是我的project/template目录?
发布于 2013-05-14 00:05:32
除非直接调用,否则base.html是您定义的模板的扩展。
例如,如果您呈现一个名为Page.html的模板-在顶部,您将拥有{% extends "base.html" %}。
当按照上面的定义进行定义时,base.html位于您在settings.py中定义的TEMPLATE_DIRS = ()下的路径中-根据您的描述,该路径被定义为project/template。
最好的方法是将django-allauth base.html文件复制到定义的TEMPLATE_DIRS位置,将其重命名为allauthbase.html,然后通过{% extends "allauthbase.html" %}扩展模板以包含它,而不是默认的库。
或者,您可以在模板位置添加一个子文件夹,如project/template/allauth,将allauth base.html放在那里,然后使用{% extends "allauth/base.html" %}。
发布于 2019-08-29 11:16:22
我遇到了相反的问题:我试图使用我自己的base.html文件,但我的Django项目获取了base.html的django-allauth版本。事实证明,在settings.py中定义INSTALLED_APPS的顺序会影响模板的呈现方式。为了让呈现我的 base.html,而不是django-allauth中定义的,我需要按如下方式定义INSTALLED_APPS:
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'),
]发布于 2015-02-13 09:24:16
两年后,这仍然是一个问题,公认的答案是缺少一些新的信息。
在github上,我发现所有的allauth模板都派生自account/ base.html,后者派生自base.html。我的解决方案是:
virtualenv/lib/python2.7/sitepackages/django-allauth/templates中,复制base.html的全部内容以替换account/base.html中的所有内容(例如,替换{% extends 'base.html' %} statement)base.html。它现在是多余的。完成了!
https://stackoverflow.com/questions/16526314
复制相似问题