Menu
CoddyTech

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 context

Drei Schritte, immer dieselben: super().get_context_data(**kwargs) ruft das von Django erstellte Wörterbuch ab, du fügst deine Schlüssel hinzu und returnst das Wörterbuch. Die Vorlage erhält, was diese Methode zurückgibt.

Die Abfrage befindet sich innerhalb der Methode und wird daher bei jeder Anfrage ausgeführt. Als Klassenattribut würde sie einmal beim Start des Servers ausgeführt, und die Zahl würde sich nie ändern.

challenge icon

Aufgabe

Einfach

Die Startseitenvorlage zeigt jetzt auch den neuesten Job. Schreibe in jobs/views.py HomeView als TemplateView für jobs/home.html um, ohne get(). Der Kontext erhält count, die Anzahl der Jobs, und latest, den Job mit dem neuesten posted-Datum.

Drücke auf „Ausführen“: 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"
quiz iconTeste dich selbst

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