post_save और pre_delete Signals
मॉडल बदलने पर कोड चलाएँ
post_save और pre_delete Signals, CoddyKit पर Django Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Django Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Django Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
एक वाक्य में Signals
signal Django के एक हिस्से को यह बताने देता है कि कुछ हुआ है, ताकि अन्य कोड सीधे कॉल किए बिना प्रतिक्रिया दे सके।
घटनाओं पर प्रतिक्रिया क्यों दें
कभी-कभी आप चाहते हैं कि मॉडल में बदलाव होने पर कोई अतिरिक्त कार्य हो, जैसे साइनअप के बाद स्वागत ईमेल भेजना। Signals उस प्रतिक्रिया को आपके सेव लॉजिक से अलग रखते हैं।
post_save Signal
post_save signal मॉडल इंस्टेंस के डेटाबेस में लिखे जाने के तुरंत बाद चलता है, इसलिए आपको पता होता है कि पंक्ति पहले से मौजूद है।
एक post_save Receiver
आप एक फ़ंक्शन लिखकर Django को बताते हैं कि post_save चलने पर उसे कॉल करे। receiver अपने आर्ग्युमेंट्स के माध्यम से सेव किए गए इंस्टेंस को प्राप्त करता है।
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)created Flag
post_save एक created बूलियन मान भेजता है: बिल्कुल नई पंक्ति के लिए True और अपडेट के लिए False। इसका उपयोग केवल पहली बार बनने पर कोड चलाने के लिए करें।
def on_save(sender, instance, created, **kwargs):
if created:
print("new", instance)pre_delete Signal
pre_delete signal पंक्ति हटाए जाने से ठीक पहले चलता है, इसलिए आपका कोड चलने पर इंस्टेंस अभी भी मौजूद रहता है।
एक pre_delete Receiver
डेटाबेस की पंक्ति हटने से पहले संबंधित संसाधनों, जैसे किसी फ़ाइल, को साफ़ करने के लिए pre_delete का उपयोग करें। instance अभी भी पूरी तरह उपलब्ध रहता है।
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 और post_delete भी
Django pre_save और post_delete भी उपलब्ध कराता है। साथ मिलकर ये हर लेखन या विलोपन से ठीक पहले और बाद के क्षणों को कवर करते हैं।
sender आर्ग्युमेंट
sender बताता है कि किस मॉडल क्लास ने signal को सक्रिय किया। receiver को sender= पास करें, ताकि वह केवल एक मॉडल को सुने।
kwargs हमेशा स्वीकार करें
हर receiver को **kwargs स्वीकार करना चाहिए। Django अतिरिक्त आर्ग्युमेंट भेज सकता है और उन्हें स्वीकार न करने पर signal चलने के समय त्रुटि आती है।
अलग रखें, लॉजिक न छिपाएँ
Signals अलग-अलग हिस्सों में होने वाली प्रतिक्रियाओं के लिए उपयोगी हैं, लेकिन भारी लॉजिक का पता लगाना कठिन हो सकता है। जब प्रतिक्रिया वास्तव में अलग हो, तभी signal का उपयोग करें।
त्वरित जाँच
जाँचें कि post_save नई पंक्तियों और अपडेट में अंतर कैसे करता है।
पुनरावलोकन: मॉडल घटनाओं पर प्रतिक्रिया
आपने Django signals सीखे: post_save लेखन के बाद created फ्लैग के साथ चलता है, pre_delete हटाने से पहले चलता है और हर receiver को **kwargs स्वीकार करना चाहिए। ✅
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “post_save और pre_delete Signals” पाठ निःशुल्क है?
हाँ — Django Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “post_save और pre_delete Signals” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Django Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“post_save और pre_delete Signals” में मैं क्या सीखूँगा?
मॉडल बदलने पर कोड चलाएँ आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Django Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Django Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Django Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“post_save और pre_delete Signals” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Django Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Django Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- post_save और pre_delete Signals
- रिसीवर सही ढंग से जोड़ना
- कस्टम Middleware लिखना
- Middleware क्रम और process_view