𝗗𝗷𝗮𝗻𝗴𝗼 ನಲ್ಲಿ 𝗖𝗼𝗻𝘁𝗲𝘅𝘁 𝗣𝗿𝗼𝗰𝗲𝘀𝘀𝗼𝗿𝘀 ಬಗ್ಗೆ ನಾನು ಹೇಗೆ ಕಲಿತೆ

ನಾನು Django ಬಳಸಿ ಒಂದು ಆನ್‌ಲೈನ್ ಅಕ್ಸೆಸರೀಸ್ ಶಾಪ್ ಅನ್ನು ನಿರ್ಮಿಸುತ್ತಿದ್ದೇನೆ.

ಉತ್ಪನ್ನಗಳ ವರ್ಗಗಳನ್ನು (categories) ತೋರಿಸಲು ನಾನು ಒಂದು navbar ಅನ್ನು ನಿರ್ಮಿಸಿದೆ. ಮೊದಲು, ನಾನು ವರ್ಗಗಳನ್ನು hard-code ಮಾಡಿದ್ದೆ. ಇದು ಸ್ವಲ್ಪ ಸಮಯದವರೆಗೆ ಕೆಲಸ ಮಾಡಿತು.

ನಂತರ ನನಗೆ ಒಂದು ಸಮಸ್ಯೆ ಎದುರಾಯಿತು. ನಾನು ಹೊಸ ವರ್ಗವನ್ನು ಸೇರಿಸಿದರೆ, ನಾನು navbar ಅನ್ನು ಮ್ಯಾನುಯಲ್ ಆಗಿ ಅಪ್‌ಡೇಟ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಇದು ಅಸಮರ್ಥವಾಗಿದೆ.

ನನ್ನ ಮೊದಲ ಆಲೋಚನೆಯೆಂದರೆ ನನ್ನ view ನಲ್ಲಿ context ಮೂಲಕ ವರ್ಗಗಳನ್ನು ಕಳುಹಿಸುವುದು. ಆದರೆ ಶೀಘ್ರದಲ್ಲೇ ನನಗೆ ಎರಡನೇ ಸಮಸ್ಯೆ ತಿಳಿಯಿತು. ಪ್ರತಿಯೊಂದು ಪುಟಕ್ಕೂ navbar ಅಗತ್ಯವಿದೆ. ಇದರರ್ಥ ನಾನು ಪ್ರತಿಯೊಂದು view ನಲ್ಲಿ ಒಂದೇ ಕೋಡ್ ಅನ್ನು ಪುನರಾವರ್ತಿಸಬೇಕಾಗುತ್ತದೆ. ಇದು ಕೋಡ್ ಅನ್ನು ಗೊಂದಲಮಯವಾಗಿಸುತ್ತದೆ.

ನಾನು ಒಂದು ಉತ್ತಮ ಮಾರ್ಗವನ್ನು ಕಂಡುಕೊಂಡೆ: 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 setting ಒಳಗಿರುವ context_processors ಪಟ್ಟಿಗೆ ಇದನ್ನು ಸೇರಿಸಿ.

Example:

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

ಈಗ, ನೀವು ನಿಮ್ಮ templates ನಲ್ಲಿ ಈ ರೀತಿ ಡೇಟಾವನ್ನು ಬಳಸಬಹುದು:

{{ custom_value }}

ಇದು ನನ್ನ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಿತು. ನನ್ನ navbar ಈಗ ಪ್ರತಿಯೊಂದು ಪುಟದಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವರ್ಗದ ಡೇಟಾವನ್ನು ಪಡೆಯುತ್ತದೆ. ನಾನು ಇನ್ನು ಮುಂದೆ ಕೋಡ್ ಅನ್ನು ಡೂಪ್ಲಿಕೇಟ್ ಮಾಡಬೇಕಾಗಿಲ್ಲ.

ಹೊಸ ಫೀಚರ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವುದು ಹೆಚ್ಚಾಗಿ ಹೊಸ ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಕಲಿಸುತ್ತದೆ. ನನಗಂತೂ, ಇದು context processors ಆಗಿತ್ತು.

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