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 najszybszeJeś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.
Wyzwanie
ŁatwyDodaj stronę z ofertami pracy, korzystając z gotowego szablonu jobs/job_list.html, który iteruje po jobs.
- W pliku
jobs/views.pydodajJobListView, widokListViewdlaJob. Nazwij jego listęjobs, umieść najnowszą datępostedna początku i pozostaw domyślny szablon. - W pliku
jobs/urls.pydodaj trasę"jobs/"o nazwielist.
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
2Generyczne widoki wyświetlania
ListViewDetailViewPoćwicz samodzielnie: Edytor online Django