Django密码重置多个

tam*_*.py 4 python authentication django

您好,我正在尝试在 Django 中创建密码重置视图。我已经设置了邮件后端、网址和模板。一切看起来都很好,但是当我尝试发送邮件以重置密码时,Django 正在发送多封电子邮件。例如同时使用 7 或 11 个密码重置电子邮件。我怎样才能让它每次只发送一封电子邮件。

非常感谢

这就是我所做的:

设置.py:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST_USER = "my_email"
EMAIL_HOST_PASSWORD = "my_password"
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
Run Code Online (Sandbox Code Playgroud)

网址.py

path('password-reset/',
     auth_views.PasswordResetView.as_view(template_name='accounts/password_reset.html'),
     name='password_reset'),
path('password-reset/done/',
     auth_views.PasswordResetDoneView.as_view(template_name='accounts/password_reset_done.html'),
     name='password_reset_done'),
path('password-set-confirm/<uidb64>/<token>/',
     auth_views.PasswordResetConfirmView.as_view(template_name='accounts/password_reset_confirm.html'),
     name='password_reset_confirm'),
path('password-set-complete/',
     auth_views.PasswordResetCompleteView.as_view(template_name='accounts/password_reset_complete.html'),
     name='password_reset_complete'),
Run Code Online (Sandbox Code Playgroud)

此外,我为每个视图设置了模板。

man*_*uss 7

如果这仍然是一个问题......如果您有多个“测试用户”并且您使用相同的电子邮件地址创建了它们,这可能会导致您的问题


dir*_*ten 6

检查 Django 源代码本身有时会有所帮助,因此如果您不明白发生了什么,请始终深入研究。

如果您查看 中PasswordResetFormsave()方法django.contrib.auth.forms,您会看到它循环遍历self.get_users(email),然后为每个发送一封(且仅发送一封)电子邮件user

因此,可以发送多封电子邮件的唯一方法是,如果有多个用户使用相同的email.