મેં Django માં Context Processors વિશે કેવી રીતે શીખ્યું

હું Django સાથે એક ઓનલાઇન એસેસરીઝ શોપ બનાવી રહ્યો છું.

મેં પ્રોડક્ટ કેટેગરીઝ બતાવવા માટે એક navbar બનાવ્યું. શરૂઆતમાં, મેં કેટેગરીઝને hard-code કરી હતી. આ થોડા સમય માટે કામ કરી ગયું.

પછી મને એક સમસ્યા દેખાઈ. જો હું નવી કેટેગરી ઉમેરું, તો મારે navbar ને મેન્યુઅલી અપડેટ કરવું પડે છે. આ બિનકાર્યક્ષમ છે.

મારો પહેલો વિચાર મારા view માં context દ્વારા કેટેગરીઝ પાસ કરવાનો હતો. મને જલ્દી જ બીજી સમસ્યા દેખાઈ. દરેક પેજને navbar ની જરૂર હોય છે. આનો અર્થ એ છે કે મારે દરેક single 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 માં register કરવું પડશે. તેને 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