ListView
Fa parte della sezione View basate su classi del percorso Django di Coddy. Lezione 4 di 18.
La bacheca ha bisogno di una pagina che elenchi tutti i lavori. Un elenco delle righe di una tabella è così comune che Django ha scritto la vista: ListView. Indicale un modello e interrogherà le righe, quindi le visualizzerà in un template. L'elenco di un sito di ricette, nell'app recipes:
from django.views.generic import ListView
class RecipeListView(ListView):
model = Recipe
context_object_name = "recipes" # {% for recipe in recipes %}
ordering = ["minutes"] # prima le più velociSe non specifichi template_name, visualizza recipes/recipe_list.html: l'etichetta dell'app, il nome del modello in minuscolo e poi _list.html. Le righe sono disponibili come object_list e recipe_list, oppure con il nome indicato in context_object_name.
ordering accetta gli stessi valori di order_by(), quindi ["-minutes"] metterebbe per prima la ricetta più lenta. Senza questa opzione, le righe vengono restituite nell'ordine del database.
Sfida
FacileAggiungi la pagina degli annunci di lavoro. Il relativo modello, jobs/job_list.html, è pronto e scorre jobs.
- In
jobs/views.py, unaJobListView, unaListViewdiJob, con l’elenco denominatojobse la datapostedpiù recente per prima. Mantieni il modello predefinito. - In
jobs/urls.py, una route"jobs/"denominatalist.
Premi Run e apri /jobs/.
Provalo tu
from django.views.generic import TemplateView
from .models import Job
class HomeView(TemplateView):
template_name = "jobs/home.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["count"] = Job.objects.count()
context["latest"] = Job.objects.order_by("-posted").first()
return context
class AboutView(TemplateView):
template_name = "jobs/about.html"
Tutte le lezioni di View basate su classi
Esercitati da solo: Playground Django