0Pricing
Django Academy · Leçon

Connecter correctement les récepteurs

Enregistrez les signaux dans apps.py pour éviter les pièges.

Connecter correctement les récepteurs est une leçon Django Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.

Receivers Must Be Imported

A receiver only listens if Django actually imports the module it lives in. If the file is never loaded, the signal silently does nothing.

The Classic Trap

Putting receivers in models.py sometimes works by luck, and sometimes not. That fragility is the connection problem you want to avoid.

Use a signals.py File

The clean pattern is a dedicated signals.py inside your app that holds every receiver for that app in one obvious place.

from django.db.models.signals import post_save
from django.dispatch import receiver

@receiver(post_save, sender=Profile)
def sync(sender, instance, **kwargs):
    pass

The AppConfig.ready Hook

Django calls ready() on each app config once at startup. That is the official place to load your signal handlers.

Import Inside ready

In apps.py, import your signals module from inside ready so receivers register exactly once when the app boots.

from django.apps import AppConfig

class BlogConfig(AppConfig):
    name = "blog"

    def ready(self):
        from . import signals

Point default_app_config

Make sure your app uses that config. Modern Django auto-discovers apps.py, so a matching AppConfig class is usually enough.

connect Without a Decorator

Instead of @receiver, you can wire a handler with connect. It does the same job and is handy for dynamic registration.

post_save.connect(sync, sender=Profile)

Avoiding Double Firing

If a module is imported twice, a receiver can run twice. Centralizing registration in ready() keeps each handler connected only once.

The dispatch_uid Safety Net

Pass a unique dispatch_uid so Django refuses to connect the same receiver more than once, even across reimports.

post_save.connect(sync, sender=Profile, dispatch_uid="profile_sync")

Disconnecting Receivers

You can also call disconnect to stop a handler, which is useful inside tests that should not trigger side effects.

Keep One App's Signals Together

Grouping each app's handlers in its own signals.py keeps reactions discoverable and stops them from scattering across the codebase.

Quick Check

Recall where signal handlers should be registered.

Recap: Wiring Signals Right

You learned to keep receivers in a signals.py, import them from AppConfig.ready(), and use dispatch_uid to prevent duplicate connections. ✅

Questions Fréquemment Posées

La leçon « Connecter correctement les récepteurs » est-elle gratuite ?

Oui — le texte complet de « Connecter correctement les récepteurs » 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 « Connecter correctement les récepteurs » ?

Enregistrez les signaux dans apps.py pour éviter les pièges. 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 2 sur 4.

Combien de temps prend la leçon « Connecter correctement les récepteurs » ?

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

  1. Signaux post_save et pre_delete
  2. Connecter correctement les récepteurs
  3. Écrire un intergiciel personnalisé
  4. Ordre des intergiciels et process_view
← Retour à Django Academy