Django AllAuth 不扩展 'base.html',尽管模板中存在 base.html

Django AllAuth does not extend 'base.html', despite base.html existing in templates

base.html 适用于所有其他 url 链接,但一旦我加载 localhost:8000/accounts/(例如注销或登录),css 模板就会执行根本不起作用。该功能仍然有效,只是 css 不起作用。

这是根据教程(从 8:22 到 10:44):https://www.youtube.com/watch?v=bopkZBbIa7c。我一步一步地按照教程进行操作,但它给出的结果与教程不同。 (只是想重申功能没问题,只是普通的 django css)

我目前的settings.py是:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'tinymce',
    'posts',

    'django.contrib.sites',

    'allauth',
    'allauth.account',
    'allauth.socialaccount',
]

网址:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', index),
    path('blog/', blog, name='post_list'),
    path('post/<id>', post, name = 'post_detail'),
    path('search/', search, name = 'search'),
    path('tinymce/', include('tinymce.urls')),
    path('accounts/', include('allauth.urls')),
    path('accounts/profile/', blog, name='post_list')
]

如有任何帮助,我们将不胜感激。谢谢。

Django 版本 3.1.4 Python3

1.原因allauth的login.html正在使用自己的base.html

Django 会在 allauth 包中寻找 allauth 的 login.html。您可以在

下查看
myvenv/lib/python3.7/site-packages/allauth/templates/account/login.html

此文件夹下的模板将使用 allauth 中的 base.html 个,位于:

myvenv/lib/python3.7/site-packages/allauth/templates/

不是您在 /templates 下创建的那个。

2。如何强制 allauth 的 login.html 使用您自己的 base.html

我假设

  • 一个。您已经创建了一个项目明智的 templates 文件夹。
  • b。在 settings.py 下,你在 TEMPLATES=[
  • 下有这个
        'DIRS': [BASE_DIR.joinpath('templates')],
        'APP_DIRS': True,

然后,您将生成一个名为account的文件夹,并将login.html放入其中。

templates/account/login.html

现在,当 django 查找模板 login.html 时,它会首先查找 templates/account/login.html 而不是 allauth 包的模板。在这种情况下,模板将使用 your own base.html.