Signaux post_save et pre_delete
Exécutez du code lorsque les modèles changent.
Signaux post_save et pre_delete est une leçon Django Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Django Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Django Academy comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Signals in a Sentence
A signal lets one part of Django announce that something happened, so other code can react without being directly called.
Why React to Events
Sometimes you want side effects when a model changes, like sending a welcome email after signup. Signals keep that reaction out of your save logic.
The post_save Signal
The post_save signal fires right after a model instance is written to the database, so you know the row already exists.
A post_save Receiver
You write a function and tell Django to call it when post_save fires. The receiver gets the saved instance through its arguments.
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=Profile)
def on_save(sender, instance, **kwargs):
print("saved", instance)The created Flag
post_save passes a created boolean: True on a brand-new row, False on an update. Use it to run code only on first creation.
def on_save(sender, instance, created, **kwargs):
if created:
print("new", instance)The pre_delete Signal
The pre_delete signal fires just before a row is removed, so the instance still exists when your code runs.
A pre_delete Receiver
Use pre_delete to clean up related resources, like a file, before the database row vanishes. The instance is still fully available.
from django.db.models.signals import pre_delete
@receiver(pre_delete, sender=Photo)
def clean_up(sender, instance, **kwargs):
instance.image.delete(save=False)pre_save and post_delete Too
Django also ships pre_save and post_delete. Together they cover the moments just before and after each write or delete.
The sender Argument
The sender tells you which model class triggered the signal. Pass sender= to a receiver so it only listens to one model.
Always Accept kwargs
Every receiver should accept **kwargs. Django may pass extra arguments, and missing them raises an error when the signal fires.
Decouple, Don't Bury Logic
Signals shine for cross-cutting reactions, but heavy logic can become hard to trace. Reach for a signal when the reaction is truly separate.
Quick Check
Test how post_save tells new rows apart from updates.
Recap: Reacting to Model Events
You met Django signals: post_save fires after writes with a created flag, pre_delete fires before removals, and every receiver should accept **kwargs. ✅
Questions Fréquemment Posées
La leçon « Signaux post_save et pre_delete » est-elle gratuite ?
Oui — le texte complet de « Signaux post_save et pre_delete » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Django Academy, passe à CoddyKit PRO. Le cours Django Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Signaux post_save et pre_delete » ?
Exécutez du code lorsque les modèles changent. Tu pratiques Django Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Django Academy ?
Aucune expérience préalable n'est requise. Django Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Signaux post_save et pre_delete » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Django Academy ?
Oui. Chaque leçon Django Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Signaux post_save et pre_delete
- Connecter correctement les récepteurs
- Écrire un intergiciel personnalisé
- Ordre des intergiciels et process_view