首页 > 解决方案 > 自定义登录站点未在 Django 中显示

问题描述

我创建了一个 Django 应用程序,并希望提供一个自定义登录页面,只能使用谷歌登录。

我已经根据这篇文章实现了 Google 登录:https ://www.section.io/engineering-education/django-google-oauth/ 它实际上工作正常,当我点击 localhost/account/login 时,我得到了一个登录页面: Django 标准登录界面

我实际上不想要注册和“本地”登录选项,我只需要谷歌登录。

为此,我创建了以下文件夹结构来覆盖登录模板(基于https://learndjango.com/tutorials/django-login-and-logout-tutorial):MyApp/templaltes/registration/login.html

文件夹结构

login.html 有以下内容:

{% extends "base.html" %}
{% load i18n %}
{% load socialaccount %}
{% block content %}
    <div class="row">
        <center><h1>{% trans 'LoginHeading' %}</h1></center>
    </div>
    {% if user.is_authenticated %}
        <p>Welcome, You are logged in as {{ user.username }}</p>
    {% else %}
        <a href="{% provider_login_url 'google' %}">Login With Google</a>
    {% endif %}
{% endblock %}

我还在 settings.py 的 TEMPLATES 部分添加了 'DIRS': [str(BASE_DIR.joinpath('templates'))]。

不幸的是,我仍然看到 Django 默认登录页面。我错过了什么?

(我还重新启动了开发服务器,以确保它不存在相同结果的问题)

标签: pythondjangoauthenticationcustomization

解决方案


我已经想通了。在彻底阅读了 Allauth 的文档后,我发现了这一点:

例如,与 account_login URL 对应的视图使用模板 account/login.html。如果您在代码布局中创建具有此名称的文件,它可以覆盖 allauth 附带的文件。

所以我将文件夹结构更改为 account/login.html 并且它可以工作。


推荐阅读