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

אתגר

קל

תבנית דף הבית מציגה כעת גם את המשרה החדשה ביותר. כתוב מחדש את HomeView:

  • TemplateView עבור jobs/home.html, ללא get().
  • היא מוסיפה להקשר את count, מספר המשרות, ואת latest, המשרה עם תאריך posted החדש ביותר.

לחץ על Run: בדף הבית מופיעים 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 אונליין