Aggiungere al contesto
Fa parte della sezione View basate su classi del percorso Django di Coddy. Lezione 3 di 18.
Anche la home page potrebbe essere una TemplateView, ma il suo template ha bisogno di dati. Le variabili che un template riceve sono il suo contesto e una vista generica le crea in un metodo, get_context_data(). Sostituiscilo per aggiungere le tue. Un sito di ricette conta le sue ricette veloci:
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 contextTre passaggi, sempre gli stessi: super().get_context_data(**kwargs) recupera il dizionario creato da Django, tu aggiungi le tue chiavi e return il dizionario. Il template riceve ciò che questo metodo restituisce.
La query si trova all'interno del metodo, quindi viene eseguita a ogni richiesta. Come attributo della classe, verrebbe eseguita una sola volta, all'avvio del server, e il numero non cambierebbe mai.
Sfida
FacileIl template della pagina iniziale mostra ora anche l'offerta di lavoro più recente. Riscrivi HomeView:
- Una
TemplateViewperjobs/home.html, senzaget(). - Aggiunge al contesto
count, il numero di offerte di lavoro, elatest, l'offerta con la datapostedpiù recente.
Premi Esegui: la pagina iniziale mostra 12 jobs open e Newest: Python Developer at Brightline.
Provalo tu
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"
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di View basate su classi
Esercitati da solo: Playground Django