Встречается на 2% собеседований по Python

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

Сигналы в Django — это механизм для отправки и получения уведомлений при определенных событиях в приложении. Они реализуют паттерн "наблюдатель", позволяя разным частям кода реагировать на изменения, не будучи жестко связанными.

Основные компоненты:

  • Отправитель (sender) — модель или другой объект, генерирующий сигнал
  • Сигнал — сам объект сигнала (например, post_save)
  • Получатель (receiver) — функция, которая обрабатывает сигнал

Пример использования:

python
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 поля

Сигналы помогают сохранять слабую связность кода, но могут усложнить отладку. Рекомендуется документировать их использование.

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы