Django PasswordResetForm 不向密码不可用的用户发送电子邮件

问题描述 投票:0回答:1

在此输入图片描述

在我的 Django 应用程序中,我使用 PasswordResetForm 来允许用户重置密码。但是,我注意到密码无法使用的用户不会收到密码重置电子邮件。 PasswordResetForm 中的 get_users 方法过滤掉这些用户。

Django 文档指出:

PasswordResetForm 中的 get_users 方法还会过滤掉密码不可用的用户,因此这些用户也不会收到电子邮件。您必须为这些用户分配某种类型的密码,或者覆盖表单中的该方法,以免按该条件过滤掉。

此外,我收到“200 OK”响应并看到日志条目 GET /password-reset/done/ HTTP/1.1" 200 6626,但电子邮件未发送。

如何解决这个问题? 具体来说,我怎样才能:

为密码不可用的用户分配可用的密码。 重写PasswordResetForm中的get_users方法以包含密码不可用的用户。

python-3.x django email django-views django-forms
1个回答
0
投票

好吧,我通过重写 get_users 方法找到了解决方案。

类PasswordResetForm(auth_forms.PasswordResetForm): def get_users(自我, 电子邮件): 用户模型 = get_user_model() 电子邮件字段名称 = UserModel.get_电子邮件字段名称() active_users = UserModel._default_manager.filter( **{f'{email_field_name}__iexact':电子邮件,'is_active':True} ) 返回(u 代表 active_users 中的 u)

© www.soinside.com 2019 - 2024. All rights reserved.