Как работают сигналы в Django

Python Middle Без компании
Как работают сигналы в Django
Ответы
Сигналы в Django — это механизм для отправки и получения уведомлений при определенных событиях в приложении. Они реализуют паттерн "наблюдатель", позволяя разным частям кода реагировать на изменения, не будучи жестко связанными. Основные компоненты: - **Отправитель (sender)** — модель или другой объект, генерирующий сигнал - **Сигнал** — сам объект сигнала (например, `post_save`) - **Получатель (receiver)** — функция, которая обрабатывает сигнал Пример использования: ``` from django.db.models.signals import post_save from django.dispatch import receiver from myapp.models import MyModel @receiver(post_save, sender=MyModel) def my_handler(sender, instance, created, **kwargs): if created: print(f"Создан новый объект {instance}") ``` Основные встроенные сигналы: - `pre_save`/`post_save` — до/после сохранения модели - `pre_delete`/`post_delete` — до/после удаления - `m2m_changed` — при изменении ManyToMany поля Сигналы помогают сохранять слабую связность кода, но могут усложнить отладку. Рекомендуется документировать их использование.