Что такое сигнал в Django

Python Senior Без компании
Что такое сигнал в Django
Ответы
Сигналы в Django — это механизм для отправки и получения уведомлений при определенных событиях в приложении. Они позволяют разным частям кода реагировать на изменения, не создавая жестких зависимостей между компонентами. Основные типы сигналов: - **Встроенные сигналы**: `pre_save`, `post_save`, `pre_delete`, `post_delete` и др. - **Пользовательские сигналы**: можно создавать свои сигналы через `django.dispatch.Signal`. Пример использования `post_save`: ``` 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}") ``` Особенности: - Сигналы работают асинхронно - Позволяют избегать циклических импортов - Могут замедлять работу при злоупотреблении Лучшие практики: - Выносить обработчики в отдельный модуль `signals.py` - Подключать через `ready()` метод в `apps.py` - Избегать сложной логики в обработчиках