Menu
CoddyTech

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ù veloci

Se 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.

challenge icon

Sfida

Facile

Aggiungi la pagina degli annunci di lavoro. Il relativo modello, jobs/job_list.html, è pronto e scorre jobs.

  • In jobs/views.py, una JobListView, una ListView di Job, con l’elenco denominato jobs e la data posted più recente per prima. Mantieni il modello predefinito.
  • In jobs/urls.py, una route "jobs/" denominata list.

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