Menu
CoddyTech

ListView

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

Zespół potrzebuje strony z listą wszystkich zadań. Lista wierszy tabeli jest tak powszechna, że Django napisało dla niej widok: ListView. Przekaż mu model, a pobierze wiersze i wyrenderuje szablon z ich użyciem. Lista na stronie z przepisami, 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. Szablon zawsze otrzymuje wiersze jako object_list. Otrzymuje je również jako recipe_list albo, jeśli ustawisz context_object_name, pod tą nazwą.

ordering przyjmuje te same argumenty co order_by(), więc ["-minutes"] umieści najwolniejszy przepis na początku. Jeśli nie podasz tej opcji, wiersze zostaną zwrócone w kolejności z bazy danych.

challenge icon

Wyzwanie

Łatwy

Dodaj stronę z ofertami pracy, korzystając z gotowego szablonu jobs/job_list.html, który iteruje po jobs.

  1. W pliku jobs/views.py dodaj JobListView, widok ListView dla Job. Nazwij jego listę jobs, umieść najnowszą datę posted na początku i pozostaw domyślny szablon.
  2. W pliku jobs/urls.py dodaj trasę "jobs/" o nazwie list.

Otwórz /jobs/: Python Developer jest pierwszy, a Technical Writer ostatni.

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