我希望允许用户更改他的电子邮件地址。 用户将更改他的电子邮件地址,然后会向该地址发送一封确认电子邮件,并附有一个链接。 用户单击链接后,它将在数据库中更改他的电子邮件地址。
我知道django-generic-confirmation可以处理此类确认,但我想自己尝试解决问题。
要更改电子邮件,我的代码将是:
我该如何延迟在数据库中更改电子邮件,直到用户确认了他的电子邮件?我该如何创建一个链接来激活这个过程的电子邮件?谢谢。
我知道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']]
)
我该如何延迟在数据库中更改电子邮件,直到用户确认了他的电子邮件?我该如何创建一个链接来激活这个过程的电子邮件?谢谢。
User.objects.get(username=username).update(email=request.POST['email'])
应该改为User.objects.filter(username=username).update(email=request.POST['email'])
。此外,直接从 POST 请求中获取电子邮件地址可能不是一个好主意 - 没有验证可能会在以后给你带来麻烦。 - Tomasz Zieliński