Django Djoser:电子邮件地址重置

Posted

技术标签:

【中文标题】Django Djoser:电子邮件地址重置【英文标题】:Django Djoser: Email address reset 【发布时间】:2020-02-03 12:18:18 【问题描述】:

我正在使用用户名进行主要识别。但是,用户也有电子邮件地址。我想知道如何设置“电子邮件地址重置”,以便用户可以更改他们的电子邮件地址。这个功能对我来说似乎很明显,但我没有找到任何东西 - 我是否遗漏了什么或者我的方法不正确?

哦,我想保持用户名不变,我只是想让通过确认等更改电子邮件成为可能。我认为首先将电子邮件发送到新地址然后才更改是很重要的它。

任何帮助将不胜感激。提前谢谢你。

【问题讨论】:

您是否已经配置了 smtp 服务器? 嘿,阿明。我已成功配置密码重置和帐户激活。问题是我不知道 Djoser 是否支持此电子邮件重置。当然,我可以对其进行逆向工程,但据我所见并非如此。逻辑告诉我,如果你真的无法重置你的电子邮件,那么这是一个巨大的缺陷。这就是为什么我认为应该有一些东西。如果没有,我想我将不得不自己实现它。我也考虑过(可能会创建一个拉取请求,IDK) 【参考方案1】:

首先我建议您观看这个很棒的 Djoser 教程Django Rest Framework Authentication Crash Course 然后您需要使用您的 gmail API 或 sendgrid API 设置您的电子邮件配置。这是您需要放入设置中的示例代码

对于 gmail

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False
EMAIL_PORT = 587
EMAIL_HOST_USER = 'your email address@gmail.com'
EMAIL_HOST_PASSWORD = 'gmail API Key (password)'

从REST implementation of Django authentication system复制模板 然后在设置中添加您的html,如下所示

'PASSWORD_RESET_CONFIRM_URL': 'password_changed_confirmation/password/reset/confirm/uid/token',
    'USERNAME_RESET_CONFIRM_URL': 'username_changed_confirmation/username/reset/confirm/uid/token',
    'ACTIVATION_URL': 'activation/activate/uid/token',
    'SEND_ACTIVATION_EMAIL': True,
    'SERIALIZERS': ,

希望这会有所帮助

【讨论】:

以上是关于Django Djoser:电子邮件地址重置的主要内容,如果未能解决你的问题,请参考以下文章

使用 Djoser 和 Django Rest Framework 激活帐户

Django Rest Framework djoser 激活问题

使用 Django 的密码重置通知用户电子邮件无效

使用gmail和Django注册不会重置密码电子邮件

如何覆盖 Djoser 基本端点用户/我

Django:重置密码不发送电子邮件