Django-allauth加载了错误的base.html模板

bco*_*713 8 python django django-allauth

我一直试图让django-allauth工作几天,我终于知道发生了什么.

base.html该应用程序不会加载使用django-allauth安装的模板,而是加载base.html我用于其余网站的文件.

我怎么告诉django-allauth在virtualenv/lib/python2.7/sitepackages/django-allauth目录而不是我的project/template目录中使用base.html模板?

cjo*_*318 9

我有相反的问题:我试图用我自己的base.html文件,但我的Django项目被抓住django-allauth的版本base.html。事实证明,你定义的顺序INSTALLED_APPSsettings.py影响模板的呈现方式。为了让我的 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'),
]
Run Code Online (Sandbox Code Playgroud)


Dan*_*rst 7

除非直接调用,否则您base.html是您定义的模板的扩展.

例如,如果您渲染一个名为的模板Page.html- 在顶部,您将拥有{% extends "base.html" %}.

如上所述,base.html它位于您在settings.pyunder下定义的路径中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" %}.