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 duluJika 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.
Tantangan
MudahTambahkan halaman lowongan kerja. Templatenya, jobs/job_list.html, sudah siap dan melakukan perulangan pada jobs.
- Di
jobs/views.py, buatJobListView, sebuahListViewuntukJob, dengan daftar bernamajobsdan tanggalpostedterbaru ditampilkan lebih dahulu. Gunakan template default. - Di
jobs/urls.py, buat rute"jobs/"bernamalist.
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
2Tampilan Generik untuk Menampilkan Data
ListViewDetailViewLatihan sendiri: Playground Django