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 reçues par un modèle 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 construit 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, donc elle s’exécute à chaque requête. En tant qu’attribut de classe, elle s’exécuterait 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. Réécrivez HomeView :

  • Une TemplateView pour jobs/home.html, sans get().
  • Elle ajoute count, le nombre d’offres d’emploi, et latest, l’offre dont la date posted est la plus récente, au contexte.

Cliquez sur Run : la page d’accueil indique 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