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").
Aufgabe
EinfachDie Vorlage jobs/templates/jobs/about.html ist fertig. Zeige sie unter /about/ an:
- In
jobs/views.pyeineAboutView, eineTemplateView, die sie rendert. - In
jobs/urls.pyeine Route"about/"mit dem Namenabout.
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