【问题标题】:How can I update the email address using the confirmation code in Django?如何使用 Django 中的确认码更新电子邮件地址?
【发布时间】:2021-02-26 03:10:31
【问题描述】:
我使用dj-rest-auth 的所有功能来注册、登录、确认电子邮件地址、更改密码、重置密码等等。不幸的是,图书馆不支持更改电子邮件地址。我希望经过身份验证的用户首先输入帐户密码和新的电子邮件地址。验证成功后,我想向用户发送一个专门生成的确认码。只有当他输入时,旧的电子邮件地址才会更改为新的。据我所知,dj-rest-auth 中没有这样的功能。不幸的是,我也没有在任何地方找到任何用于此目的的当前解决方案或库。有没有人有这样的问题,可以在这里分享他的解决方案?提前谢谢你。
【问题讨论】:
标签:
python
django
django-rest-framework
django-allauth
django-rest-auth
【解决方案1】:
虽然我没有任何解决方案可以准确地满足您的需求,但这是一个替代品。
您可以使用 django all-auth 和一些电子邮件后端向新添加的电子邮件发送电子邮件以确认新电子邮件。在发送的电子邮件中,将有一个确认链接,用户必须单击该链接以确认新电子邮件。
使用 django all-auth 后,您只需添加一个电子邮件后端,这将有助于发送电子邮件。其余部分将由 all-auth 维护。
例如,
在您的 settings.py 中,您可以添加 SMTP 电子邮件后端以从您选择的 gmail 帐户发送电子邮件。
将这些代码行添加到您的 settings.py 中;
EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = DEFAULT_FROM_EMAIL = 'HOST_EMAIL' #HOST_EMAIL is your email from which you want to send email to the user.
EMAIL_HOST_PASSWORD = 'HOST_PASSWORD' #HOST_PASSWORD is the password of the email you are using as HOST_EMAIL
但是在完成所有这些操作之后,要使其在本地工作,您需要转到您用作 HOST_EMAIL 的 Google 帐户。转到管理 google 帐户 >> 安全 >> 打开不太安全的应用程序。然后,您将能够向用户发送电子邮件。
注意:如果您为您的 google 帐户启用了 2 因素身份验证,则这些步骤将不起作用。这种类型的帐户有一些不同的设置。