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(). Sovrascrivilo per aggiungere i tuoi dati. 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 restituisce 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 di classe, verrebbe eseguita una sola volta, all'avvio del server, e il numero non cambierebbe mai.
Sfida
FacileIl modello della pagina iniziale ora mostra anche l’annuncio di lavoro più recente. In jobs/views.py, riscrivi HomeView come TemplateView per jobs/home.html, senza get(). Il suo contesto aggiunge count, il numero di annunci di lavoro, e latest, l’annuncio con la data posted più 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