使用Django和allauth实现电子邮件的双重认证

要做的事情

使用Django中的allauth库来创建用户注册功能。
临时注册→发送邮件→点击邮件中的链接完成正式注册的流程。
本次代替发送邮件,将邮件内容显示在控制台中。

undefined

在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】

广告
将在 10 秒后关闭
bannerAds