Menu
CoddyTech

TemplateView

Teil des Abschnitts Klassenbasierte Views der Django-Journey von Coddy. Lektion 2 von 18.

Das Stellenportal benötigt eine „Über uns“-Seite, die lediglich ein Template rendert. Django hat dafür eine Klasse: TemplateView. Ihre get()-Methode ist bereits geschrieben: Sie rendert das in template_name angegebene Template. Eine Rezepteseite speichert ihre FAQ unter recipes/templates/recipes/pages/faq.html:

from django.views.generic import TemplateView


class FaqView(TemplateView):
    template_name = "recipes/pages/faq.html"

Das ist die gesamte View. Du konfigurierst eine generische View, indem du Klassenattribute festlegst, und der von Django geschriebene Code liest sie aus.

template_name ist der Name, den du an render() übergeben würdest: der Dateipfad nach templates/. Lässt du einen Ordner weg, schlägt die Seite mit TemplateDoesNotExist fehl. Die Route ist wie bei jeder klassenbasierten View: path("faq/", views.FaqView.as_view(), name="faq").

challenge icon

Aufgabe

Einfach

Die Vorlage jobs/templates/jobs/about.html ist fertig. Zeige sie unter /about/ an:

  • In jobs/views.py eine AboutView, eine TemplateView, die sie rendert.
  • In jobs/urls.py eine Route "about/" mit dem Namen about.

Klicke auf „Run“ und öffne /about/: Dort steht Job Board lists jobs at small tech companies in Berlin, Lisbon and London.

Probier es selbst

from django.shortcuts import render
from django.views import View

from .models import Job


class HomeView(View):
    def get(self, request):
        count = Job.objects.count()
        return render(request, "jobs/home.html", {"count": count})

Alle Lektionen in Klassenbasierte Views

Übe selbstständig: Django-Playground