0Pricing
Django Academy · Lektion

Receiver korrekt verbinden

Signale in apps.py registrieren und typische Fehler vermeiden

Receiver korrekt verbinden ist eine kostenlose Django Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Django Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Django Academy-Kurs umfasst insgesamt 4 Lektionen.

Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.

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. ✅

Häufig gestellte Fragen

Ist die Lektion „Receiver korrekt verbinden“ kostenlos?

Ja — der vollständige Text von „Receiver korrekt verbinden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Django Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Django Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Receiver korrekt verbinden“?

Signale in apps.py registrieren und typische Fehler vermeiden Du übst Django Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Django Academy zu starten?

Keine Vorkenntnisse erforderlich. Django Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Receiver korrekt verbinden“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Django Academy-Lektion Code schreiben und ausführen?

Ja. Jede Django Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. post_save- und pre_delete-Signale
  2. Receiver korrekt verbinden
  3. Eigenes Middleware schreiben
  4. Middleware-Reihenfolge und process_view
← Zurück zu Django Academy