Menu
CoddyTech

Ajout au contexte

Fait partie de la section Vues basées sur des classes du Journey Django de Coddy. Leçon 3 sur 18.

La page d’accueil pourrait aussi être une TemplateView, sauf que son modèle a besoin de données. Les variables qu’un modèle reçoit constituent son contexte, et une vue générique les construit dans une méthode, get_context_data(). Redéfinis-la pour ajouter les tiennes. Un site de recettes compte ses recettes rapides :

class RecipeHomeView(TemplateView):
    template_name = "recipes/home.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["quick"] = Recipe.objects.filter(minutes__lte=30).count()
        return context

Trois étapes, toujours les mêmes : super().get_context_data(**kwargs) récupère le dictionnaire créé par Django, tu ajoutes tes clés, puis tu return le dictionnaire. Le modèle reçoit ce que cette méthode renvoie.

La requête se trouve dans la méthode, elle s’exécute donc à chaque requête. En tant qu’attribut de classe, elle ne s’exécuterait qu’une seule fois, au démarrage du serveur, et le nombre ne changerait jamais.

challenge icon

Défi

Facile

Le modèle de la page d’accueil affiche désormais aussi l’offre d’emploi la plus récente. Dans jobs/views.py, réécris HomeView en tant que TemplateView pour jobs/home.html, sans get(). Son contexte ajoute count, le nombre d’offres d’emploi, et latest, l’offre dont la date posted est la plus récente.

Appuie sur « Jouer » : la page d’accueil affiche 12 jobs open et Newest: Python Developer at Brightline.

Essayez vous-même

from django.shortcuts import render
from django.views import View
from django.views.generic import TemplateView

from .models import Job


class HomeView(View):
    def get(self, request):
        count = Job.objects.count()
        return render(request, "jobs/home.html", {"count": count})


class AboutView(TemplateView):
    template_name = "jobs/about.html"
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Vues basées sur des classes

Entraînez-vous par vous-même : Playground Django