הוספה ל-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 מחזיר את המילון. התבנית מקבלת את מה שהמתודה הזאת מחזירה.
השאילתה נמצאת בתוך המתודה, ולכן היא רצה בכל בקשה. בתור מאפיין מחלקה היא הייתה רצה פעם אחת, כשהשרת מופעל, והמספר לעולם לא היה משתנה.
אתגר
קלתבנית דף הבית מציגה כעת גם את המשרה החדשה ביותר. כתוב מחדש את 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"
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תצוגות מבוססות מחלקות
תרגלו בעצמכם: Django אונליין