Django 用户注册与邮件确认

17 Mar 2025 | 4 分钟阅读

通常,我们在任何网站上注册时,它都会发送确认链接以激活帐户。或者有时它会要求通过电子邮件更改电子邮件或重置帐户密码。

在本教程中,我们将学习如何在 Django 中使用电子邮件发送确认邮件,当有人在我们的 Web 应用程序上注册时。我们将讨论一种简单的方法来构建它。但是 Django 提供了许多其他选项,如 django allauth 应用程序、django-registration、django-registration-redux。这些应用程序使这项任务变得非常简单。

在开始之前,请确保您必须具备 Django 和 Python 编程语言的知识。创建 Django 的基本设置并配置设置。

配置设置

首先,我们需要在 settings.py 中配置电子邮件主机服务器以进行确认邮件。在 settings.py 文件中添加以下配置。

我们使用了电子邮件 ID 以及密码和 Gmail SMTP 主机服务器。您也可以使用其他 SMTP 服务器。

生成令牌

我们需要创建将在电子邮件确认 URL 中使用的令牌。在 token 中创建 token.py 文件,并添加以下代码。

我们使用了用于重置密码的 PasswordTokenGenerator 类。在上面的代码中,我们为确认生成了唯一的令牌。

创建注册表单

Django 提供了内置的 UserCreationForm,它是一个用于创建表单的出色类。我们在应用程序中创建一个 forms.py 文件并导入 UserCreationForm 类。让我们理解以下代码。

forms.py

在上面的代码中,我们导入了 UserCreationForm 和内置的 User。然后我们创建了一个 SignupForm,在 SignupForm 中包含额外的电子邮件字段。

view.py

在这里,我们创建了一个注册视图,它使用 POST 方法获取信息并验证它。我们使用了 commit = False,因为它允许我们获取模型对象并添加一些额外的属性。这里我们已经完成了 user.is_active = False,这意味着在验证电子邮件之前,用户无法登录。

然后我们使用 EmailMessage() 函数发送邮件以及主题、消息。电子邮件消息由模板创建。

templates/acc_active_email.html

此模板使用激活链接创建电子邮件正文,该正文将发送给应用程序。

现在我们需要为激活链接创建一个视图。

创建激活视图

一旦用户点击激活链接,我们需要通过激活链接激活他们的帐户。此过程由 activate 视图处理。

views.py

我们在 signup 函数之后添加了激活函数。此视图将检查令牌是否有效,然后用户将激活并登录。我们设置了 user.is_active = True,这意味着用户可以登录。

现在我们将视图映射到 urls。

URLS

在 template/signup.html 中创建一个注册表单。

该表单将如下所示。当用户点击提交按钮时,激活链接会发送到他们输入的电子邮件 ID。

Django User Registration with Email Confirmation

当您单击注册按钮时,确认电子邮件会发送到给定的电子邮件 ID。

Django User Registration with Email Confirmation

单击收到的链接,现在您已准备好登录。

注意 - 确保已打开不太安全的应用程序访问设置。否则,您将遇到 smtp 错误。

Django User Registration with Email Confirmation

哒哒,我们已经成功创建了基于电子邮件配置的用户注册。这个过程很简单,并且需要更少的代码即可完成。您可以通过添加更多功能(例如有吸引力的模板、重定向到登录等)来改进它。