Dziś bierzemy na warsztat jeden z podstawowych modeli związanych z wyświetlaniem z wyświetlaniem nam obiektów modeli.

ListView jest odpowiedzialne z wylistowanie wszystkich obiektów modelu z naszej bazy danych. Przykłady: wyświetlamy listę wszystkich postów z bloga, wyświetlamy listę użytkowników zarejestrowanych w systemie i wiele więcej. Ale mam nadzieje, że wiesz o co chodzi.

No to teraz reprezentacja w postaci kodu (model sobie darujmy, wyobraź sobie, że będzie to model postu z bloga):

from django.utils import timezone
from django.views.generic.list import ListView

from articles.models import Article

class ArticleListView(ListView):

    model = Article

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['now'] = timezone.now()
        return context

Metoda get_context_data przekazuje do naszego szablonu jakiś dodatkowy kontekst, tutaj datę ({{now}}).

Przekazanie klasy do naszych url:

from django.urls import path

from article.views import ArticleListView

urlpatterns = [
    path('', ArticleListView.as_view(), name='article-list'),
]

Z zamkniętymi oczami to pewnie robisz ;]

I teraz iteracja naszych obiektów z modelu do szablonów:

<h1>Articles</h1>
<ul>
{% for article in object_list %}
    <li>{{ article.pub_date|date }} - {{ article.headline }}</li>
{% empty %}
    <li>No articles yet.</li>
{% endfor %}
</ul>

Jak widzisz, podstawowe wylistowanie wierszy z bazy danych nie jest wcale trudne. Zamykasz to w kliku linijkach kodu i mas natychmiastowy efekt.