Zum Kontext hinzufügen
Teil des Abschnitts Klassenbasierte Views der Django-Journey von Coddy. Lektion 3 von 18.
Die Startseite könnte ebenfalls eine TemplateView sein, allerdings benötigt ihre Vorlage Daten. Die Variablen, die eine Vorlage erhält, bilden ihren Kontext, und eine generische Ansicht erstellt sie in einer Methode, get_context_data(). Überschreibe sie, um eigene Variablen hinzuzufügen. Eine Rezeptseite zählt ihre schnellen Rezepte:
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 contextDrei Schritte, immer dieselben: super().get_context_data(**kwargs) liefert das von Django erstellte Wörterbuch, du fügst deine Schlüssel hinzu und return das Wörterbuch. Die Vorlage erhält alles, was diese Methode zurückgibt.
Die Abfrage steht innerhalb der Methode, daher wird sie bei jeder Anfrage ausgeführt. Als Klassenattribut würde sie einmal ausgeführt werden, wenn der Server startet, und die Zahl würde sich nie ändern.
Aufgabe
EinfachDie Startseitenvorlage zeigt jetzt auch die neueste Stelle an. Schreibe HomeView um:
- Eine
TemplateViewfürjobs/home.html, ohneget(). - Sie fügt dem Kontext
count, die Anzahl der Stellen, undlatest, die Stelle mit dem neuestenposted-Datum, hinzu.
Drücke auf „Run“: Auf der Startseite steht 12 jobs open und Newest: Python Developer at Brightline.
Probier es selbst
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"
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Klassenbasierte Views
Übe selbstständig: Django-Playground