ভূমিকা
Django Signals হলো Django ফ্রেমওয়ার্কের একটি শক্তিশালী ফিচার যা "event-driven" প্রোগ্রামিং সহজ করে। এটি এমন একটি সিস্টেম যেখানে কোনো ইভেন্ট (event) ঘটলে স্বয়ংক্রিয়ভাবে নির্দিষ্ট কোড চালানো যায়।
একটি সুন্দর analogy হলো — Django Signals হলো একটি “ডোরবেল” 🔔। যখন কোনো মডেলে পরিবর্তন হয়, তখন এই ডোরবেল বাজে, আর সেই ডোরবেলের আওয়াজ শুনে নির্দিষ্ট কাজ সম্পন্ন হয়।
কিন্তু শক্তিশালী হওয়ায় Signals ব্যবহার করলে কিছু “গোপন ঝুঁকি” তৈরি হতে পারে। এই আর্টিকেলে আমরা Django Signals কী, কীভাবে কাজ করে, এবং এর সঠিক ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করব।
Django Signals কী?
Signals হলো Django-তে একটি “observer pattern” এর বাস্তবায়ন। এটি একটি ইভেন্ট-হ্যান্ডলার সিস্টেম যেখানে কোনো মডেল পরিবর্তন হলে নির্দিষ্ট ফাংশন চালানো হয়।
Django Signals-এর কিছু সাধারণ ধরন:
pre_save— মডেল save হওয়ার আগে ট্রিগার হয়।post_save— মডেল save হওয়ার পরে ট্রিগার হয়।pre_delete— মডেল delete হওয়ার আগে ট্রিগার হয়।post_delete— মডেল delete হওয়ার পরে ট্রিগার হয়।
উদাহরণ:
from django.db.models.signals import post_save
from django.dispatch import receiver
from myapp.models import Product
@receiver(post_save, sender=Product)
def product_created(sender, instance, created, **kwargs):
if created:
print(f"Product created: {instance.name}")
এখানে product_created ফাংশনটি মডেলের সিগন্যাল শুনে কাজ করে।

