Sobes.tech
Back to questions
Middle
5

Что такое сигналы в Django, зачем нужны, какие основные сигналы использовали?

Companies where asked
fabriqeue

Answer from AI

sobes.tech AI

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

Зачем нужны:

  • Позволяют отделить логику, которая должна срабатывать при определённых действиях (например, создание пользователя, сохранение модели).
  • Упрощают расширение функционала без изменения основного кода.

Основные сигналы, которые часто используются:

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

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

from django.db.models.signals import post_save
from django.dispatch import receiver
from django.contrib.auth.models import User

@receiver(post_save, sender=User)
def user_created(sender, instance, created, **kwargs):
    if created:
        print(f"Создан новый пользователь: {instance.username}")

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