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 Rezept-Website 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. Django bezeichnet seine vorgefertigten View-Klassen als generische Views. Du richtest eine davon mit Klassenattributen wie template_name ein; der von Django geschriebene Code liest diese 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 das Laden der Seite mit TemplateDoesNotExist fehl. Die Route ist wie bei jeder klassenbasierten View: path("faq/", views.FaqView.as_view(), name="faq").

challenge icon

Aufgabe

Einfach

Zeige das fertige Template jobs/templates/jobs/about.html unter /about/ an.

  1. Füge in jobs/views.py AboutView hinzu, eine TemplateView, die es rendert.
  2. Füge in jobs/urls.py die Route "about/" mit dem Namen about hinzu.

Ö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