我正在使用Django rest auth在Django中设置用户身份验证。大多数事情都运行良好,但无论是在虚拟后端还是通过Mailgun,我都无法发送密码重置电子邮件。
我遵循this tutorial设置了基本身份验证。本教程中的所有内容都可以正常运行,但并未说明如何重置密码。
我在Mailgun上有一个帐户,正在尝试使用沙箱发送邮件。
# api/urls.py
from django.urls import include, path
urlpatterns = [
path('rest-auth/', include('rest_auth.urls')),
path('rest-auth/registration/', include('rest_auth.registration.urls')),
path('users/', include('users.urls')),
]
我正在通过可浏览的API表单http://127.0.0.1:8000/api/v1/rest-auth/password/reset/
要求为注册用户重置密码。我在表格中输入电子邮件地址,然后按“ POST”。该页面显示以下内容:
POST /api/v1/rest-auth/password/reset/
HTTP 200 OK
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept
{
"detail": "Password reset e-mail has been sent."
}
但是电子邮件没有发送!
mailgun日志未显示任何活动-未发送电子邮件。
当我在浏览器中的“网络”标签上查看时,没有看到发帖请求。
这是我使用Mailgun进行的设置:
EMAIL_HOST = 'smtp.mailgun.org'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'postmaster@sandboxxxxx.mailgun.org'
EMAIL_HOST_PASSWORD = 'xxxx'
EMAIL_USE_TLS = True
(我已经将真实的沙箱和密码放入了实际文件中)
首先,在settings.py中使用它:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
我希望使用。'/ manage.py runserver将电子邮件文本记录到服务器正在运行的终端上。但是什么都没有记录。
然后,在settings.py中使用它:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
我希望电子邮件由Mailgun发送。
我错过了什么明显的愚蠢的东西?
我认为Django rest auth包含默认的电子邮件模板,因此我不必手动创建该模板吗?
http://127.0.0.1:8000/api/v1/rest-auth/password/reset/上的管理页面是否还需要做其他事情? http://127.0.0.1:8000/api/v1/rest-auth/login/工作正常,我可以登录并查看服务器返回的令牌。
非常感谢任何想法!
答案 0 :(得分:0)
对此我没有很好的答案,但是我放弃了使用django-rest-auth进行密码重置,而是使用了django-contrib-auth网址和模板。这与我的React前端并不完全匹配,但至少它提供了用户功能。