python - 自定义登录站点未在 Django 中显示
问题描述
我创建了一个 Django 应用程序,并希望提供一个自定义登录页面,只能使用谷歌登录。
我已经根据这篇文章实现了 Google 登录:https ://www.section.io/engineering-education/django-google-oauth/ 它实际上工作正常,当我点击 localhost/account/login 时,我得到了一个登录页面:
我实际上不想要注册和“本地”登录选项,我只需要谷歌登录。
为此,我创建了以下文件夹结构来覆盖登录模板(基于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 默认登录页面。我错过了什么?
(我还重新启动了开发服务器,以确保它不存在相同结果的问题)
解决方案
我已经想通了。在彻底阅读了 Allauth 的文档后,我发现了这一点:
例如,与 account_login URL 对应的视图使用模板 account/login.html。如果您在代码布局中创建具有此名称的文件,它可以覆盖 allauth 附带的文件。
所以我将文件夹结构更改为 account/login.html 并且它可以工作。
推荐阅读
- c - 如何使用我在浏览目录中的文件时编写的可执行文件
- r - 对于每个“模拟”数字,我试图衡量“监视”何时大于每个“id”的“时间”
- sql - SQL 命令或排列
- arrays - 存储在状态中的对象没有可用的数组方法
- reactjs - 在 React Redux 传奇中完成 API 调用后调用 React 组件中的方法
- ethereum - 有没有比通过节点单独调用多个 API 更简单的方法从 Chainlink 获取去中心化数据?
- swift - WKWebView:如何处理 BLOB URL
- python - 比较字典列表中的值并仅返回具有最高值的字典
- prolog - 如何仅使用追加检查列表中是否至少出现两次元素?- 序言
- ionic-framework - 每页 ionic 5 中的路由器文件