Menambahkan ke Konteks
Termasuk bagian View Berbasis Class dalam perjalanan Django di Coddy. Pelajaran 3 dari 18.
Halaman beranda juga bisa menggunakan TemplateView, tetapi templatenya membutuhkan data. Variabel yang diterima template adalah konteks-nya, dan generic view menyusunnya dalam sebuah method, get_context_data(). Override method itu untuk menambahkan data milikmu. Sebuah situs resep menghitung resep singkatnya:
class RecipeHomeView(TemplateView):
template_name = "recipes/home.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["quick"] = Recipe.objects.filter(minutes__lte=30).count()
return contextTiga langkah, selalu sama: super().get_context_data(**kwargs) mengambil dictionary yang dibuat Django, kamu menambahkan key milikmu, lalu return dictionary tersebut. Template menerima apa pun yang dikembalikan method ini.
Query berada di dalam method, jadi query dijalankan pada setiap permintaan. Jika menjadi atribut class, query hanya akan dijalankan sekali, saat server dimulai, dan jumlahnya tidak akan pernah berubah.
Tantangan
MudahTemplate beranda kini juga menampilkan lowongan terbaru. Tulis ulang HomeView:
- Sebuah
TemplateViewuntukjobs/home.html, tanpaget(). - Tambahkan
count, jumlah lowongan, danlatest, lowongan dengan tanggalpostedterbaru, ke dalam context.
Tekan Jalankan: halaman beranda menampilkan 12 jobs open dan Newest: Python Developer at Brightline.
Coba sendiri
from django.shortcuts import render
from django.views import View
from django.views.generic import TemplateView
from .models import Job
class HomeView(View):
def get(self, request):
count = Job.objects.count()
return render(request, "jobs/home.html", {"count": count})
class AboutView(TemplateView):
template_name = "jobs/about.html"
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di View Berbasis Class
2Tampilan Generik untuk Menampilkan Data
ListViewDetailViewLatihan sendiri: Playground Django