使用Django和allauth实现电子邮件的双重认证
要做的事情
使用Django中的allauth库来创建用户注册功能。
临时注册→发送邮件→点击邮件中的链接完成正式注册的流程。
本次代替发送邮件,将邮件内容显示在控制台中。
在allauth中,除了可以实现会员注册外,还可以实现登录、注销、密码重设、通过Facebook或Google等社交媒体进行登录等功能,但本次只需创建用户注册功能。
前提 tí)
假设已创建了一个用户注册功能的项目。
环境
Ubuntu20-04
Django3.1
django-allauth 0.42.0 -> Ubuntu 20.04
Django 3.1
django-allauth 0.42.0
步驟
①导入django-allauth
可以通过pip install django-allauth来进行导入。
创建一个用于用户认证的应用程序”账户”。
请用中文将以下内容进行表述:创建一个名为”accounts”的应用程序,使用Python的命令”manage.py startapp”。
③设置.py
请在下面的#处添加。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP-DIRS': True,
'OPTIONS': {
'context_processors': [
`django.template.context_processors.request',#
],
},
},
]
AUTHENTICATION_BACKENDS = [
#allauthのあるなしにかかわらず、管理画面にユーザーネームでログインするのに必要
'django.contrib.auth.backends.Modelbackend',
#allauthを使うときに必要
'django.account.auth_backends.AuthenticationBackend',#
]
INSTALLED_APPS = [
'django.contrib.auth',#
'django.contrib.messages',#
'django.contrib.sites',#
'allauth',#
'allauth.account',#
'allauth.socialaccount',#
]
SITE_ID = 1
#ユーザ登録確認メールを送信
ACCOUNT_EMAIL_VARIFICATION = 'mandatory'
ACCOUNT_EMAIL_REQUIRED = True
#コンソール上にユーザ登録確認メールを表示。ローカルで確認するため
EMAIL_BACKEND = 'django.core.backends.console.EmailBackend'
在ACCOUNT_EMAIL_VARIFICATION的选项中,将其设置为’mandatory’将发送确认邮件,而设置为’none’则不会发送邮件。
使用以下中文本地化执行的重述:
④网址.py.
from django.urls import path, include
urlpatterns = [
path('accounts/', include('allauth.urls')),#
]
不需要用户注册页面的URL和模板,因为allauth已经提供了。
(不过设计方面不是很好,最好进行自定义。但是在这篇文章中不涉及。)
顺便提一下,可以在以下地址确认allauth提供的URL。
使用Django – Django Allauth | django Tutorial
⑤移民
执行 python manage.py migrate。
确认
运行python manage.py runserver,并访问localhost:8000/accounts/signup/。
结束
因为我在制作会员注册功能时遇到了一些困难,所以我写下了一些备忘录。
我是Django的初学者,很有可能有些地方是错误的,如果发现了错误,希望能指正一下。
请看下文
欢迎使用django-allauth!- django-allauth 0.32.0
快速创建Django用户认证功能【django-allauth】