Для настройки отправки писем на почту при изменении пароля в Django, вам понадобится использовать Django's Signals и Django's Email sending functionality.
Первым шагом является создание сигнала для регистрации события изменения пароля. Для этого откройте файл, содержащий вашу модель пользователя (обычно models.py
) и импортируйте следующие необходимые модули:
from django.contrib.auth.models import User from django.db.models.signals import post_save from django.dispatch import receiver
Затем, создайте функцию, которая будет вызываться каждый раз при сохранении экземпляра модели пользователя после изменения его пароля:
@receiver(post_save, sender=User) def send_password_change_email(sender, instance, **kwargs): if kwargs.get('created', False): return # Отправьте письмо на почту пользователя # Используйте функцию send_mail из модуля django.core.mail
Внутри функции send_password_change_email
вы можете использовать функцию send_mail
из модуля django.core.mail
для отправки письма на почту пользователя. Вот пример кода, который может быть использован:
from django.core.mail import send_mail @receiver(post_save, sender=User) def send_password_change_email(sender, instance, **kwargs): if kwargs.get('created', False): return # Получите данные пользователя user_email = instance.email user_name = instance.username # Подготовьте текст и тему письма subject = 'Password Change Notification' message = f'Dear {user_name}, your password has been changed successfully.' from_email = '[email protected]' recipient_list = [user_email] # Отправьте письмо send_mail(subject, message, from_email, recipient_list)
В коде выше, мы получаем адрес электронной почты и имя пользователя из экземпляра модели User
, и затем используем их для создания сообщения и его отправки с помощью функции send_mail
.
Обратите внимание, что перед использованием функции send_mail
вам также потребуется настроить указанный в переменной from_email
адрес электронной почты отправителя в файле настроек Django (settings.py
), чтобы ваши письма отправлялись успешно.
Наконец, не забудьте добавить импорт вашей функции send_password_change_email
в вашем приложении в файле apps.py
:
from .models import send_password_change_email
Теперь, при каждом сохранении экземпляра модели User
, после изменения пароля, функция send_password_change_email
будет вызываться, и пользователь получит уведомление о изменении пароля по электронной почте.