𝗛𝗼𝘄 𝗜 𝗟𝗲𝗮𝗿𝗻𝗲𝗱 𝗔𝗯𝗼𝘂𝘁 𝗖𝗼𝗻𝘁𝗲𝘅𝘁 𝗣𝗿𝗼𝗰𝗲𝘀𝘀𝗼𝗿𝘀 𝗶𝗻 𝗗𝗷𝗮𝗻𝗴𝗼

मी Django वापरून एक ऑनलाइन ॲक्सेसरीज शॉप (online accessories shop) तयार करत आहे.

प्रॉडक्ट कॅटेगरी दाखवण्यासाठी मी एक नॅवबार (navbar) तयार केला. सुरुवातीला, मी कॅटेगरी हार्ड-कोड (hard-code) केल्या होत्या. काही काळ हे व्यवस्थित चालले.

मग मला एक समस्या जाणवली. जर मी नवीन कॅटेगरी जोडली, तर मला नॅवबार मॅन्युअली अपडेट करावा लागतो. हे अकार्यक्षम आहे.

माझा पहिला विचार असा होता की माझ्या view मधील context द्वारे कॅटेगरी पास कराव्यात. पण लवकरच मला दुसरी समस्या दिसली. प्रत्येक पेजला नॅवबारची गरज असते. याचा अर्थ असा की मला प्रत्येक view मध्ये तोच कोड पुन्हा पुन्हा लिहावा लागेल. यामुळे कोड विस्कळीत (messy) होतो.

मला एक उत्तम मार्ग सापडला: Django Context Processors.

Context processors सर्व templates साठी डेटा उपलब्ध करून देतात. तुम्हाला प्रत्येक view मधून डेटा पास करण्याची गरज नसते.

Context processors चा वापर खालील गोष्टींसाठी करा:

Context processor हे एक Python function आहे. ते एक request object घेते आणि एक dictionary रिटर्न करते.

Example:

def custom_context(request):
    return {
        "custom_value": "hello from context processors"
    }

तुम्हाला हे function तुमच्या settings मध्ये रजिस्टर करावे लागेल. TEMPLATES सेटिंगमधील context_processors लिस्टमध्ये ते जोडा.

Example:

'OPTIONS': {
    'context_processors': [
        'myapp.context_processors.custom_context',
    ],
},

आता, तुम्ही तुमच्या templates मध्ये डेटा अशा प्रकारे वापरू शकता:

{{ custom_value }}

यामुळे माझी समस्या सुटली. आता माझ्या नॅवबारला प्रत्येक पेजवर आपोआप कॅटेगरी डेटा मिळतो. मला आता कोडची पुनरावृत्ती (duplicate) करावी लागत नाही.

नवीन फीचर्स तयार करताना अनेकदा नवीन संकल्पना शिकायला मिळतात. माझ्यासाठी, ही संकल्पना context processors ची होती.

Source: https://dev.to/merdas369/how-i-learned-about-context-processors-in-django-5e2h