איך למדתי על Context Processors ב-Django
אני בונה חנות אביזרים מקוונת באמצעות Django.
בניתי navbar כדי להציג קטגוריות מוצרים. בהתחלה, הקטגוריות היו hard-coded. זה עבד במשך זמן מה.
ואז ראיתי בעיה. אם אני מוסיף קטגוריה חדשה, אני חייב לעדכן את ה-navbar ידנית. זה לא יעיל.
המחשבה הראשונה שלי הייתה להעביר את הקטגוריות דרך ה-context ב-view שלי. מהר מאוד ראיתי בעיה שנייה. כל דף זקוק ל-navbar. זה אומר שאצטרך לשכפל את אותו הקוד בכל view. זה יוצר קוד מבולגן.
מצאתי דרך טובה יותר: Django Context Processors.
Context processors הופכים נתונים לזמינים עבור כל ה-templates. אין צורך להעביר נתונים מכל view.
השתמש ב-context processors עבור:
- קטגוריות ניווט
- הגדרות אתר
- התראות משתמש
- נתוני עגלת קניות
Context processor הוא פונקציית Python. היא מקבלת אובייקט request ומחזירה dictionary.
דוגמה:
def custom_context(request):
return {
"custom_value": "hello from context processors"
}
עליך לרשום את הפונקציה ב-settings שלך. הוסף אותה לרשימת ה-context_processors בתוך הגדרת ה-TEMPLATES.
דוגמה:
'OPTIONS': {
'context_processors': [
'myapp.context_processors.custom_context',
],
},
כעת, ניתן להשתמש בנתונים ב-templates שלך כך:
{{ custom_value }}
זה פתר לי את הבעיה. ה-navbar שלי מקבל כעת נתוני קטגוריות באופן אוטומטי בכל דף. אני כבר לא משכפל קוד.
פיתוח פיצ'רים מלמד לעיתים קרובות מושגים חדשים. עבורי, אלו היו context processors.
מקור: https://dev.to/merdas369/how-i-learned-about-context-processors-in-django-5e2h