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").
Aufgabe
EinfachZeige das fertige Template jobs/templates/jobs/about.html unter /about/ an.
- Füge in
jobs/views.pyAboutViewhinzu, eineTemplateView, die es rendert. - Füge in
jobs/urls.pydie Route"about/"mit dem Namenabouthinzu.
Ö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