Menu
CoddyTech

Menambahkan ke Konteks

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

Halaman beranda juga bisa berupa 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 milikmu sendiri. Situs resep menghitung resep cepatnya:

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 context

Ada tiga langkah, selalu sama: super().get_context_data(**kwargs) mengambil dictionary yang dibuat Django, kamu menambahkan key-mu, lalu kamu return dictionary tersebut. Template menerima apa pun yang dikembalikan method ini.

Query berada di dalam method, jadi query dijalankan pada setiap permintaan. Sebagai atribut class, query akan dijalankan sekali saat server dimulai, dan jumlahnya tidak akan pernah berubah.

challenge icon

Tantangan

Mudah

Template beranda kini juga menampilkan lowongan terbaru. Di jobs/views.py, tulis ulang HomeView sebagai TemplateView untuk jobs/home.html, tanpa get(). Konteksnya menambahkan count, jumlah lowongan, dan latest, lowongan dengan tanggal posted terbaru.

Tekan tombol “Main”: 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"
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di View Berbasis Class

Latihan sendiri: Playground Django