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 duluTanpa 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.
Tantangan
MudahTambahkan halaman pekerjaan dengan template siap pakai jobs/job_list.html, yang melakukan perulangan pada jobs.
- Di
jobs/views.py, tambahkanJobListView, sebuahListViewuntukJob. Namai daftarnyajobs, urutkan tanggalpostedterbaru di paling awal, dan gunakan template bawaan. - Di
jobs/urls.py, tambahkan rute"jobs/"dengan namalist.
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
2Tampilan Generik untuk Menampilkan Data
ListViewDetailViewLatihan sendiri: Playground Django