Menu
CoddyTech

ListView

Termasuk bagian View Berbasis Class dalam perjalanan Django di Coddy. Pelajaran 4 dari 18.

Papan membutuhkan halaman yang mencantumkan setiap pekerjaan. Daftar baris sebuah tabel sangat umum sehingga Django menulis view-nya: ListView. Berikan sebuah model, lalu view ini akan membuat query untuk baris-barisnya dan merender template dengan baris-baris tersebut. Daftar situs resep, di dalam app recipes:

from django.views.generic import ListView


class RecipeListView(ListView):
    model = Recipe
    context_object_name = "recipes"   # {% for recipe in recipes %}
    ordering = ["minutes"]             # yang paling cepat lebih dulu

Tanpa template_name, view ini merender recipes/recipe_list.html: label app, nama model dalam huruf kecil, lalu _list.html. Template selalu menerima baris-baris tersebut sebagai object_list. Baris-baris itu juga tersedia sebagai recipe_list, atau, jika kamu menetapkan context_object_name, dengan nama tersebut.

ordering menerima nilai yang sama seperti order_by(), jadi ["-minutes"] akan menampilkan resep dengan waktu paling lama terlebih dahulu. Tanpanya, baris-baris akan muncul sesuai urutan database.

challenge icon

Tantangan

Mudah

Tambahkan halaman pekerjaan dengan template siap pakai jobs/job_list.html, yang melakukan perulangan pada jobs.

  1. Di jobs/views.py, tambahkan JobListView, sebuah ListView untuk Job. Namai daftarnya jobs, urutkan tanggal posted terbaru di paling awal, dan gunakan template bawaan.
  2. Di jobs/urls.py, tambahkan rute "jobs/" dengan nama list.

Buka /jobs/: Python Developer berada di urutan pertama dan Technical Writer di urutan terakhir.

Coba sendiri

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"

Semua pelajaran di View Berbasis Class

Latihan sendiri: Playground Django