Menu
CoddyTech

Sebuah class View

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

Bagian ini membuat papan lowongan kerja, dan halaman berandanya berupa view fungsi seperti semua view sebelumnya. Django juga memungkinkan kamu menulis view sebagai class: kamu membuat subclass dari View dan menambahkan satu method untuk setiap method HTTP. Permintaan GET memanggil get(), sedangkan POST memanggil post().

from django.views import View


class RecipeCountView(View):
    def get(self, request):
        total = Recipe.objects.count()
        return HttpResponse(f"{total} recipes")

Method ini menerima self, lalu request, dan mengembalikan respons, seperti yang dilakukan view fungsi. Sebuah rute memerlukan fungsi, dan .as_view() membuat fungsi dari class tersebut: path("count/", views.RecipeCountView.as_view()). Pada setiap permintaan, fungsi itu membuat object baru dari class tersebut dan memanggil method yang sesuai.

Method yang tidak didefinisikan oleh class, seperti POST di sini, menghasilkan 405 Method Not Allowed. Manfaatnya akan terlihat berikutnya: Django menyediakan class yang sudah menangani tugas-tugas umum.

challenge icon

Tantangan

Mudah

Ubah halaman beranda menjadi class:

  • Di jobs/views.py, ganti fungsi home dengan HomeView, sebuah View yang get()-nya melakukan hal yang sama seperti home.
  • Di jobs/urls.py, arahkan rute "" ke class tersebut. Pertahankan name="home".

Tekan Jalankan: halaman beranda tetap menampilkan 12 jobs open.

Coba sendiri

from django.shortcuts import render

from .models import Job


def home(request):
    count = Job.objects.count()
    return render(request, "jobs/home.html", {"count": count})

Semua pelajaran di View Berbasis Class

Latihan sendiri: Playground Django