Menu
CoddyTech

ListView

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

Papan memerlukan halaman yang menampilkan setiap pekerjaan. Daftar baris dalam tabel sangat umum sehingga Django menulis view-nya: ListView. Berikan model kepadanya, lalu view ini akan mengueri baris-baris tersebut dan merender template yang memuatnya. Contoh list situs resep, di app recipes:

from django.views.generic import ListView


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

Jika tidak ada template_name, view ini akan merender recipes/recipe_list.html: label app, nama model dalam huruf kecil, lalu _list.html. Baris-baris tersebut tersedia sebagai object_list dan recipe_list, atau dengan nama yang ditetapkan di context_object_name.

ordering menerima nilai yang sama seperti order_by(), jadi ["-minutes"] akan menempatkan resep yang paling lama dibuat di urutan pertama. Tanpa pengaturan tersebut, baris-baris akan muncul sesuai urutan di database.

challenge icon

Tantangan

Mudah

Tambahkan halaman lowongan kerja. Templatenya, jobs/job_list.html, sudah siap dan melakukan perulangan pada jobs.

  • Di jobs/views.py, buat JobListView, sebuah ListView untuk Job, dengan daftar bernama jobs dan tanggal posted terbaru ditampilkan lebih dahulu. Gunakan template default.
  • Di jobs/urls.py, buat rute "jobs/" bernama list.

Tekan Jalankan dan buka /jobs/.

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