gpt4 book ai didi

django - 更改用户电子邮件地址

转载 作者:行者123 更新时间:2023-12-02 08:11:25 27 4
gpt4 key购买 nike

我想允许用户更改他的电子邮件地址。用户更改他的电子邮件地址,然后带有链接的确认电子邮件将发送到该地址,用户单击该链接后,它将更改他在数据库中的电子邮件地址。

我知道 django-generic-confirmation 可以处理这样的确认,但我想尝试自己做。

要更改电子邮件,我的代码是:

User.objects.get(username=username).update(email=request.POST['email'])

要向该地址发送电子邮件,我需要:

if 'Change Email' in request.POST.values():
from django.core.mail import send_mail
send_mail(
'Confirm email change',
'Click this **link** to confirm your change of email',
'from@example.com',
[request.POST['email']]
)

如何将数据库中电子邮件的更改延迟到用户确认其电子邮件之后?我如何创建一个链接来激活此过程的电子邮件?谢谢。

最佳答案

这非常简单。您想要做的是编写一个至少具有如下所示模型的应用程序;

class EmailChangeAuth(models.Model):
auth_key = models.CharField(max_length=42)
user = models.ForeignKey(User)
new_email = models.CharField(max_length=256)

使用 UUID4 填写 auth_key,您可以将其视为 urlconf 中的 slug 字段。

然后编写一个 View ,获取 auth_key,在数据库中搜索该 key ,并将用户的电子邮件更改为 new_email。完成后删除记录。

对于奖励积分,请添加过期时间,并偶尔清除超过一天的任何记录。

您可能还想考虑使用安全问题类型系统。许多人想要更改电子邮件的主要原因是旧电子邮件已不复存在。例如离开公司、邮件主机消失(现在这种情况不太常见)等等等等。

关于django - 更改用户电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6259520/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com