Django PasswordResetForm не отправляет письма пользователям с непригодными паролями
В моем Django-приложении я использую форму PasswordResetForm для того, чтобы пользователи могли сбрасывать свои пароли. Однако я заметил, что пользователи с непригодными паролями не получают писем о сбросе пароля. Метод get_users в PasswordResetForm отфильтровывает таких пользователей.
В документации Django говорится:
Метод get_users
в PasswordResetForm
также отфильтровывает пользователей с непригодным паролем, поэтому они также не получат письма. Вам придется либо назначить какой-то пароль для этих пользователей, либо переопределить этот метод в форме, чтобы не отфильтровывать их по этому условию.
Кроме того, я получаю ответ "200 OK"
и вижу запись в журнале GET /password-reset/done/ HTTP/1.1" 200 6626
, но электронные письма не отправляются.
Как я могу решить эту проблему? В частности, как я могу:
Присвойте полезный пароль пользователям, у которых есть непригодный пароль.
Переопределите метод get_users в PasswordResetForm
, чтобы включить пользователей с непригодными паролями.
Okay, I have found the solution by overriding the get_users method.
class PasswordResetForm(auth_forms.PasswordResetForm):
def get_users(self, email):
UserModel = get_user_model()
email_field_name = UserModel.get_email_field_name()
active_users = UserModel._default_manager.filter(
**{f'{email_field_name}__iexact': email, 'is_active':True}
)
return (u for u in active_users)