Django-வில் Context Processors பற்றி நான் எவ்வாறு கற்றுக்கொண்டேன்
நான் Django மூலம் ஒரு ஆன்லைன் அக்சஸரீஸ் (accessories) கடையை உருவாக்கி வருகிறேன்.
தயாரிப்புப் பிரிவுகளைக் (product categories) காண்பிக்க நான் ஒரு navbar-ஐ உருவாக்கினேன். முதலில், நான் அந்தப் பிரிவுகளை நேரடியாகக் குறியீட்டில் (hard-coded) எழுதினேன். இது சிறிது காலம் வேலை செய்தது.
பிறகு நான் ஒரு சிக்கலைக் கண்டேன். நான் ஒரு புதிய பிரிவைச் சேர்த்தால், நான் navbar-ஐ கைமுறையாக (manually) புதுப்பிக்க வேண்டும். இது திறமையற்றது.
எனது view-வில் உள்ள context மூலம் பிரிவுகளை அனுப்புவதுதான் எனது முதல் எண்ணமாக இருந்தது. ஆனால் விரைவில் நான் இரண்டாவது சிக்கலைக் கண்டேன். ஒவ்வொரு பக்கத்திற்கும் navbar தேவைப்படுகிறது. இதன் பொருள், ஒவ்வொரு view-விலும் நான் ஒரே குறியீட்டைத் திரும்பத் திரும்ப எழுத வேண்டியிருக்கும். இது குறியீட்டைச் சிக்கலாக்கும் (messy code).
நான் ஒரு சிறந்த வழியைக் கண்டறிந்தேன்: Django Context Processors.
Context processors தரவுகளை அனைத்து templates-களுக்கும் கிடைக்கச் செய்கின்றன. ஒவ்வொரு view-விலிருந்தும் தரவுகளை நீங்கள் அனுப்ப வேண்டிய அவசியமில்லை.
இதற்காக context processors-களைப் பயன்படுத்தலாம்:
- Navigation பிரிவுகள் (Navigation categories)
- Site settings
- பயனர் அறிவிப்புகள் (User notifications)
- ஷாப்பிங் கார்ட் தரவுகள் (Shopping cart data)
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