मैंने Django में Context Processors के बारे में कैसे सीखा
मैं Django के साथ एक ऑनलाइन एक्सेसरीज शॉप बना रहा हूँ।
मैंने प्रोडक्ट कैटेगरी दिखाने के लिए एक navbar बनाया। शुरुआत में, मैंने कैटेगरीज़ को hard-code कर दिया था। कुछ समय तक यह काम करता रहा।
फिर मुझे एक समस्या दिखी। अगर मैं कोई नई कैटेगरी जोड़ता हूँ, तो मुझे navbar को मैन्युअल रूप से अपडेट करना पड़ता है। यह अक्षम है।
मेरा पहला विचार अपनी view में context के माध्यम से कैटेगरीज़ को पास करने का था। जल्द ही मुझे दूसरी समस्या दिखी। हर पेज को navbar की ज़रूरत होती है। इसका मतलब है कि मुझे हर एक view में वही कोड बार-बार लिखना पड़ेगा। इससे कोड काफी उलझा हुआ (messy) हो जाता है।
मुझे एक बेहतर तरीका मिला: 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 }}
इससे मेरी समस्या हल हो गई। मेरा navbar अब हर पेज पर अपने आप कैटेगरी डेटा प्राप्त कर लेता है। अब मुझे कोड को डुप्लिकेट करने की ज़रूरत नहीं पड़ती।
फीचर्स बनाना अक्सर आपको नए कॉन्सेप्ट्स सिखाता है। मेरे लिए, यह context processors था।
स्रोत: https://dev.to/merdas369/how-i-learned-about-context-processors-in-django-5e2h