Sobes.tech
Back to questions
Junior — Middle
62

Какие типы сигналов используются в Django и для чего они применяются?

Companies where asked
Оптимакрос

Answer from AI

sobes.tech AI

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

Основные типы сигналов в Django:

  • pre_save и post_save: вызываются до и после сохранения объекта модели.
  • pre_delete и post_delete: вызываются до и после удаления объекта.
  • m2m_changed: вызывается при изменении связей многие-ко-многим.
  • request_started и request_finished: сигнализируют о начале и завершении HTTP-запроса.

Применение сигналов позволяет, например, автоматически создавать связанные объекты, логировать изменения, очищать кэш и выполнять другие действия при наступлении событий.

Пример использования сигнала 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}')