Menu
CoddyTech

הוספה ל-Context

חלק מהיחידה תצוגות מבוססות מחלקות במסלול ה-Django של Coddy. שיעור 3 מתוך 18.

גם דף הבית יכול להיות TemplateView, אלא שהתבנית שלו זקוקה לנתונים. המשתנים שתבנית מקבלת הם ההקשר שלה, ותצוגה כללית בונה אותם בשיטה get_context_data(). יש לדרוס אותה כדי להוסיף משתנים משלך. אתר מתכונים סופר את המתכונים המהירים שלו:

class RecipeHomeView(TemplateView):
    template_name = "recipes/home.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["quick"] = Recipe.objects.filter(minutes__lte=30).count()
        return context

שלושה שלבים, תמיד באותו סדר: super().get_context_data(**kwargs) מקבל את המילון ש-Django בנה, מוסיפים לו מפתחות משלך, ואז return מחזיר את המילון. התבנית מקבלת את מה שהשיטה הזאת מחזירה.

השאילתה נמצאת בתוך השיטה, ולכן היא רצה בכל בקשה. כתכונה של המחלקה היא הייתה רצה פעם אחת, כשהשרת עולה, והמספר לעולם לא היה משתנה.

challenge icon

אתגר

קל

תבנית דף הבית מציגה כעת גם את המשרה החדשה ביותר. בקובץ jobs/views.py, כתבו מחדש את HomeView כ־TemplateView עבור jobs/home.html, ללא get(). ההקשר שלה מוסיף את count, מספר המשרות, ואת latest, המשרה עם תאריך posted החדש ביותר.

לחצו על "שחק": בדף הבית מופיעים 12 jobs open וגם Newest: Python Developer at Brightline.

נסו בעצמכם

from django.shortcuts import render
from django.views import View
from django.views.generic import TemplateView

from .models import Job


class HomeView(View):
    def get(self, request):
        count = Job.objects.count()
        return render(request, "jobs/home.html", {"count": count})


class AboutView(TemplateView):
    template_name = "jobs/about.html"
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תצוגות מבוססות מחלקות

תרגלו בעצמכם: Django אונליין