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 possède 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. Vous configurez une vue générique en définissant des attributs de classe, que le code écrit par Django lit.
template_name est le nom que vous transmettriez à render() : le chemin du fichier après templates/. Omettez un dossier et 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
FacileLe modèle jobs/templates/jobs/about.html est prêt. Affichez-le sur /about/ :
- Dans
jobs/views.py, uneAboutView, uneTemplateViewqui l'affiche. - Dans
jobs/urls.py, une route"about/"nomméeabout.
Appuyez sur Run et ouvrez /about/ : le texte affiché est 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