【发布时间】:2011-09-09 17:06:00
【问题描述】:
我想允许用户更改他的电子邮件地址。用户将更改他的电子邮件地址,然后将带有链接的确认电子邮件发送到该地址,在用户单击该链接后,它将更改他在数据库中的电子邮件地址。
我知道 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 请求中获取电子邮件地址可能不是一个好主意 - 以后没有验证可能会咬你。
标签: django email email-validation