میں نے Django میں Context Processors کے بارے میں کیسے سیکھا
میں Django کے ساتھ ایک آن لائن ایکسیسریز (accessories) کی دکان بنا رہا ہوں۔
میں نے پروڈکٹ کیٹیگریز دکھانے کے لیے ایک نیویگیشن بار (navbar) بنایا۔ شروع میں، میں نے کیٹیگریز کو ہارڈ کوڈ (hard-code) کر دیا تھا۔ کچھ عرصہ تو یہ ٹھیک رہا۔
پھر مجھے ایک مسئلہ نظر آیا۔ اگر میں کوئی نئی کیٹیگری شامل کرتا ہوں، تو مجھے نیویگیشن بار کو دستی طور پر (manually) اپ ڈیٹ کرنا پڑتا ہے۔ یہ طریقہ غیر موثر ہے۔
میرا پہلا خیال یہ تھا کہ میں اپنی view میں context کے ذریعے کیٹیگریز پاس کروں۔ جلد ہی مجھے دوسرا مسئلہ نظر آگیا۔ ہر پیج کو نیویگیشن بار کی ضرورت ہوتی ہے۔ اس کا مطلب ہے کہ مجھے ہر ایک view میں ایک ہی کوڈ بار بار لکھنا پڑے گا۔ اس سے کوڈ بہت الجھ جاتا ہے۔
مجھے ایک بہتر طریقہ ملا: Django Context Processors۔
Context processors ڈیٹا کو تمام templates کے لیے دستیاب بنا دیتے ہیں۔ آپ کو ہر view سے ڈیٹا پاس کرنے کی ضرورت نہیں ہوتی۔
Context processors کا استعمال ان چیزوں کے لیے کریں:
- نیویگیشن کیٹیگریز
- سائٹ کی سیٹنگز
- صارف کے نوٹیفیکیشنز
- شاپنگ کارٹ کا ڈیٹا
Context processor ایک Python function ہے۔ یہ ایک request object لیتا ہے اور ایک dictionary واپس کرتا ہے۔
مثال:
def custom_context(request):
return {
"custom_value": "hello from context processors"
}
آپ کو اس function کو اپنی settings میں رجسٹر کرنا ہوگا۔ اسے TEMPLATES setting کے اندر context_processors کی لسٹ میں شامل کریں۔
مثال:
'OPTIONS': {
'context_processors': [
'myapp.context_processors.custom_context',
],
},
اب، آپ اپنے templates میں اس طرح ڈیٹا استعمال کر سکتے ہیں:
{{ custom_value }}
اس سے میرا مسئلہ حل ہو گیا۔ اب میرا نیویگیشن بار ہر پیج پر خود بخود کیٹیگری کا ڈیٹا حاصل کر لیتا ہے۔ اب مجھے کوڈ کو دوبارہ لکھنے کی ضرورت نہیں پڑتی۔
فیچرز بناتے ہوئے اکثر آپ نئے تصورات (concepts) سیکھتے ہیں۔ میرے لیے، یہ context processors تھے۔
Source: https://dev.to/merdas369/how-i-learned-about-context-processors-in-django-5e2h