TemplateView
Fait partie de la section Vues basées sur des classes du Journey Django de Coddy. Leçon 2 sur 18.
Le site d’offres d’emploi a besoin d’une page À propos qui affiche uniquement un modèle. Django dispose d’une classe pour cela, TemplateView. Sa méthode get() est déjà écrite : elle affiche le modèle indiqué dans template_name. Un site de recettes conserve sa FAQ dans recipes/templates/recipes/pages/faq.html :
from django.views.generic import TemplateView
class FaqView(TemplateView):
template_name = "recipes/pages/faq.html"C’est toute la vue. Django appelle ses classes de vues prêtes à l’emploi des vues génériques. Tu en configures une avec des attributs de classe tels que template_name, que le code écrit par Django lit.
template_name est le nom que tu transmettrais à render() : le chemin du fichier après templates/. Si tu omets un dossier, la page échoue avec TemplateDoesNotExist. La route est comme pour toute vue basée sur une classe : path("faq/", views.FaqView.as_view(), name="faq").
Défi
FacileAffiche le modèle prêt à l’emploi jobs/templates/jobs/about.html à l’adresse /about/.
- Dans
jobs/views.py, ajouteAboutView, uneTemplateViewqui l’affiche. - Dans
jobs/urls.py, ajoute la route"about/"nomméeabout.
Ouvre /about/ : le message suivant s’affiche : Job Board lists jobs at small tech companies in Berlin, Lisbon and London.
Essayez vous-même
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})
Toutes les leçons de Vues basées sur des classes
Entraînez-vous par vous-même : Playground Django