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包提供的URLs,该包用于管理多种登录方法(包括电子邮件和社交登录)的认证。这行代码将URL “accounts/” 转换为allauth URLs,允许用户访问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')),
...
]
不要忘记将 “YOUR CLIENT ID” 和 “YOUR SECRET KEY” 的值更改为您真实的Google和Facebook开发者控制台凭据。最后,在执行Django项目之前,请确保安装所需的软件包(例如Django-allauth)。
输出
在使用Django-allauth或Django-social-auth整合电子邮件和社交登录后,用户可以使用其电子邮件或社交媒体帐户建立帐户或登录。
结论
在Django中使用电子邮件和社交登录可以提升用户体验并简化帐户创建过程。使用Django-allauth或Django-social-auth等软件包可以使实施过程更加顺利和快速。
极客笔记