Menu
CoddyTech

ListView

Część sekcji Widoki oparte na klasach ścieżki Django w Coddy. Lekcja 4 z 18.

Tablica potrzebuje strony, która wyświetla wszystkie zadania. Lista wierszy tabeli jest tak często używana, że Django udostępnia gotowy widok: ListView. Podaj mu model, a pobierze wiersze i wyrenderuje szablon z ich danymi. Lista przepisów w aplikacji recipes:

from django.views.generic import ListView


class RecipeListView(ListView):
    model = Recipe
    context_object_name = "recipes"   # {% for recipe in recipes %}
    ordering = ["minutes"]             # najpierw najszybsze

Jeśli nie podasz template_name, widok wyrenderuje recipes/recipe_list.html: etykietę aplikacji, nazwę modelu zapisaną małymi literami, a następnie _list.html. Wiersze są dostępne jako object_list i recipe_list albo pod nazwą z context_object_name.

ordering przyjmuje te same wartości co order_by(), więc ["-minutes"] wyświetliłoby najwolniejszy przepis jako pierwszy. Bez tego wiersze pojawią się w kolejności z bazy danych.

challenge icon

Wyzwanie

Łatwy

Dodaj stronę z ofertami pracy. Jej szablon, jobs/job_list.html, jest gotowy i wykonuje pętlę po jobs.

  • W jobs/views.py dodaj JobListView, widok ListView dla Job, z listą o nazwie jobs i najnowszą datą posted na początku. Pozostaw domyślny szablon.
  • W jobs/urls.py dodaj trasę "jobs/" o nazwie list.

Naciśnij Run i otwórz /jobs/.

Spróbuj swoich sił

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"

Wszystkie lekcje w sekcji Widoki oparte na klasach

Poćwicz samodzielnie: Edytor online Django