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) 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.

challenge icon

Aufgabe

Einfach

Die Startseitenvorlage zeigt jetzt auch die neueste Stelle an. Schreibe HomeView um:

  • Eine TemplateView für jobs/home.html, ohne get().
  • Sie fügt dem Kontext count, die Anzahl der Stellen, und latest, die Stelle mit dem neuesten posted-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"
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