Signals sono l'implementazione di Django del pattern observer — permettono a determinati mittenti di notificare un insieme di ricevitori quando si verificano eventi specifici (come quando un modello viene salvato o eliminato). Abilitano codice disaccoppiato: una parte dell'app reagisce a eventi in un'altra senza accoppiamento diretto.
Segnali built-in comuni
pre_save / post_save → before / after a model instance is saved
pre_delete / post_delete → before / after a model instance is deleted
m2m_changed → a ManyToMany relationship changed
request_started / finished→ request lifecycle
user_logged_in / out → authentication events
