Menghubungkan Penerima dengan Benar
Daftarkan sinyal di apps.py untuk menghindari masalah
Menghubungkan Penerima dengan Benar adalah pelajaran Django Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Django Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Django Academy mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
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):
passThe 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 signalsPoint 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. ✅
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menghubungkan Penerima dengan Benar” gratis?
Ya — teks lengkap “Menghubungkan Penerima dengan Benar” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Django Academy, upgrade ke CoddyKit PRO. Kursus Django Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menghubungkan Penerima dengan Benar”?
Daftarkan sinyal di apps.py untuk menghindari masalah Kamu berlatih Django Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Django Academy?
Tidak diperlukan pengalaman sebelumnya. Django Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Menghubungkan Penerima dengan Benar” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Django Academy ini?
Ya. Setiap pelajaran Django Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Sinyal post_save dan pre_delete
- Menghubungkan Penerima dengan Benar
- Menulis Middleware Kustom
- Urutan Middleware dan process_view