Menu
CoddyTech

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").

challenge icon

Défi

Facile

Affiche le modèle prêt à l’emploi jobs/templates/jobs/about.html à l’adresse /about/.

  1. Dans jobs/views.py, ajoute AboutView, une TemplateView qui l’affiche.
  2. Dans jobs/urls.py, ajoute la route "about/" nommée about.

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