ਮੈਂ Django ਵਿੱਚ Context Processors ਬਾਰੇ ਕਿਵੇਂ ਸਿੱਖਿਆ

ਮੈਂ Django ਨਾਲ ਇੱਕ ਆਨਲਾਈਨ ਐਕਸੈਸਰੀਜ਼ ਸ਼ਾਪ ਬਣਾ ਰਿਹਾ ਹਾਂ।

ਮੈਂ ਉਤਪਾਦਾਂ ਦੀਆਂ ਸ਼੍ਰੇਣੀਆਂ ਦਿਖਾਉਣ ਲਈ ਇੱਕ navbar ਬਣਾਇਆ। ਸ਼ੁਰੂ ਵਿੱਚ, ਮੈਂ ਸ਼੍ਰੇਣੀਆਂ ਨੂੰ hard-code ਕਰ ਦਿੱਤਾ ਸੀ। ਇਹ ਕੁਝ ਸਮੇਂ ਲਈ ਚੱਲ ਗਿਆ।

ਫਿਰ ਮੈਨੂੰ ਇੱਕ ਸਮੱਸਿਆ ਦਿਖਾਈ ਦਿੱਤੀ। ਜੇਕਰ ਮੈਂ ਇੱਕ ਨਵੀਂ ਸ਼੍ਰੇਣੀ ਜੋੜਦਾ ਹਾਂ, ਤਾਂ ਮੈਨੂੰ navbar ਨੂੰ ਮੈਨੂਅਲੀ ਅਪਡੇਟ ਕਰਨਾ ਪਵੇਗਾ। ਇਹ ਅਕੁਸ਼ਲ (inefficient) ਹੈ।

ਮੇਰਾ ਪਹਿਲਾ ਵਿਚਾਰ ਆਪਣੀ view ਵਿੱਚ context ਰਾਹੀਂ ਸ਼੍ਰੇਣੀਆਂ ਨੂੰ pass ਕਰਨਾ ਸੀ। ਜਲਦੀ ਹੀ ਮੈਨੂੰ ਦੂਜੀ ਸਮੱਸਿਆ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ। ਹਰ ਪੇਜ ਨੂੰ navbar ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਮੈਨੂੰ ਹਰ ਇੱਕ view ਵਿੱਚ ਇੱਕੋ ਜਿਹਾ ਕੋਡ ਦੁਹਰਾਉਣਾ ਪਵੇਗਾ। ਇਸ ਨਾਲ ਕੋਡ ਬਹੁਤ ਉਲਝਣ ਵਾਲਾ (messy) ਹੋ ਜਾਂਦਾ ਹੈ।

ਮੈਨੂੰ ਇੱਕ ਬਿਹਤਰ ਤਰੀਕਾ ਮਿਲਿਆ: Django Context Processors।

Context processors ਸਾਰੇ templates ਲਈ ਡੇਟਾ ਉਪਲਬਧ ਕਰਵਾਉਂਦੇ ਹਨ। ਤੁਹਾਨੂੰ ਹਰ view ਤੋਂ ਡੇਟਾ pass ਕਰਨ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।

Context processors ਦੀ ਵਰਤੋਂ ਇਹਨਾਂ ਲਈ ਕਰੋ:

A 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 list ਵਿੱਚ ਜੋੜੋ।

Example:

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

ਹੁਣ, ਤੁਸੀਂ ਆਪਣੇ templates ਵਿੱਚ ਇਸ ਤਰ੍ਹਾਂ ਡੇਟਾ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ:

{{ custom_value }}

ਇਸ ਨੇ ਮੇਰੀ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰ ਦਿੱਤਾ। ਮੇਰਾ navbar ਹੁਣ ਹਰ ਪੇਜ 'ਤੇ ਆਪਣੇ ਆਪ (automatically) category data ਪ੍ਰਾਪਤ ਕਰ ਲੈਂਦਾ ਹੈ। ਹੁਣ ਮੈਨੂੰ ਕੋਡ ਦੁਹਰਾਉਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।

ਫੀਚਰ ਬਣਾਉਂਦੇ ਸਮੇਂ ਅਕਸਰ ਤੁਸੀਂ ਨਵੇਂ ਸੰਕਲਪ (concepts) ਸਿੱਖਦੇ ਹੋ। ਮੇਰੇ ਲਈ, ਇਹ context processors ਸਨ।

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