Django 中的电子邮件和社交登录 - 分步指南


电子邮件和社交登录是网站和应用程序常用的技术,允许用户创建帐户或登录。电子邮件登录需要用户提供其电子邮件地址和密码,而社交登录允许用户使用其社交网络帐户(例如 Facebook 或 Google)登录。在本教程中,我们将逐步讲解如何在 Django 中设置电子邮件和社交登录。

方法

在 Django 中,有多种方法可以集成电子邮件和社交登录。其中最常用的是 Django-allauth 包,它支持多种登录方式的认证,包括电子邮件和社交登录。另一种方法是使用 Django-social-auth 包,它提供各种社交网络服务的社交认证。

语法

Django-allauth 安装 -

pip install django-allauth

Django-social-auth 安装 -

pip install django-social-auth

以下代码演示了如何使用 Django-allauth 在 Django 中实现电子邮件和社交登录 -

算法

  • 应安装 Django-allauth 或 Django-social-auth。

  • 在 settings.py 中配置身份验证后端。

  • 在 urls.py 中包含 allauth URL。

  • 构建数据库表并运行迁移。

  • 为电子邮件验证配置电子邮件后端。

  • 修改模板以匹配您网站的外观。

在 urls.py 中包含以下 URL

path('accounts/', include('allauth.urls')),

在 urls.py 中,代码行 "path('accounts/', include('allauth.urls'))" 包含 Django-allauth 包提供的 URL,该包管理多种登录方式(包括电子邮件和社交登录)的身份验证。此代码行将 URL "accounts/" 转换为 allauth URL,允许用户访问 Django-allauth 身份验证视图。

运行迁移以创建必要的数据库表。

在 settings.py 中设置电子邮件后端以启用电子邮件验证

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

自定义 templates/account/ 中的模板以匹配您网站的设计。

按照以下步骤创建项目的环境和目录 -

  • 应安装 Python 和 pip。

  • 使用 virtualenv 或 venv 创建虚拟环境。

  • 激活虚拟环境。

  • 使用 pip 安装 Django。

  • 使用 "django-admin startproject" 命令创建一个新的 Django 项目。

  • 使用 "python manage.py startapp" 命令在项目中创建一个新的 Django 应用程序。

  • 在 settings.py 中,将新应用程序添加到 INSTALLED_APPS 列表中。

  • 在 models.py 中定义应用程序的模型。

  • 使用 "python manage.py makemigrations" 和 "python manage.py migrate" 命令创建数据库表。

  • 在 settings.py 中配置身份验证后端。

  • 使用代码行 "path('accounts/', include('allauth.urls'))" 在 urls.py 中包含 allauth URL。

  • 在 settings.py 中,为电子邮件验证配置电子邮件后端。

  • 修改 templates/account/ 中的模板以匹配您网站的样式。

  • 使用 "python manage.py runserver" 启动 Django 开发服务器并测试电子邮件和社交登录。

示例

第一段代码(在 settings.py 中)应添加到您项目的 settings.py 文件中,您可以在其中设置 Django 项目的配置设置。

# settings.py
INSTALLED_APPS = [
   '...';
   'allauth',
   'allauth.account',
   'allauth.socialaccount',
   'allauth.socialaccount.providers.google',
   'allauth.socialaccount.providers.facebook',
   ...
]

AUTHENTICATION_BACKENDS = [
   'django.contrib.auth.backends.ModelBackend',
   'allauth.account.auth_backends.AuthenticationBackend',
]

SOCIALACCOUNT_PROVIDERS = {
   'google': {
      'APP': {
         'client_id': 'YOUR_CLIENT_ID',
         'secret': 'YOUR_SECRET_KEY',
         'key': ''
      }
   },
   'facebook': {
      'APP': {
         'client_id': 'YOUR_CLIENT_ID',
         'secret': 'YOUR_SECRET_KEY',
         'key': ''
      }
   }
} 

第二段代码(在 urls.py 中)应添加到您项目的 urls.py 文件中,您可以在其中指定 Django 项目的 URL 模式。

# urls.py
from django.urls import path, include

urlpatterns = [
   ...
   path('accounts/', include('allauth.urls')),
   ...
] 

请记住,使用您实际的 Google 和 Facebook 开发者控制台凭据替换 "YOUR CLIENT ID" 和 "YOUR SECRET KEY" 值。最后,在执行 Django 项目之前,请确保已安装所有必需的软件包(例如 Django-allauth)。

输出

使用 Django-allauth 或 Django-social-auth 集成电子邮件和社交登录后,用户可以使用其电子邮件或社交媒体帐户创建帐户或登录。

结论

在 Django 中使用电子邮件和社交登录可以改善用户体验,并简化帐户创建流程。使用 Django-allauth 或 Django-social-auth 等软件包可以使实施过程更加顺畅和快速。

更新于: 2023年5月22日

348 次浏览

启动您的 职业生涯

完成课程获得认证

开始
广告