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

challenge icon

Défi

Facile

Le modèle jobs/templates/jobs/about.html est prêt. Affichez-le sur /about/ :

  • Dans jobs/views.py, une AboutView, une TemplateView qui l'affiche.
  • Dans jobs/urls.py, une route "about/" nommée about.

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