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 contextTrois é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.
Défi
FacileLe modèle de la page d’accueil affiche désormais aussi l’offre d’emploi la plus récente. Réécrivez HomeView :
- Une
TemplateViewpourjobs/home.html, sansget(). - Elle ajoute
count, le nombre d’offres d’emploi, etlatest, l’offre dont la datepostedest 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"
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