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 adalah tampilan fungsi seperti semua tampilan sejauh ini. Django juga memungkinkan kamu menulis tampilan sebagai class: kamu membuat subclass dari View dan menambahkan satu method untuk setiap metode HTTP. Permintaan GET memanggil get(), sedangkan permintaan 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 tampilan fungsi. Sebuah rute membutuhkan fungsi, dan .as_view() membuatnya dari class: path("count/", views.RecipeCountView.as_view()). Pada setiap permintaan, fungsi itu membuat object baru dari class dan memanggil method yang sesuai.
Permintaan dengan metode yang tidak didefinisikan oleh class, seperti permintaan POST ke tampilan ini, akan mendapat respons 405 Method Not Allowed. Manfaatnya akan terlihat berikutnya: Django menyediakan class yang sudah menangani tugas-tugas umum.
Tantangan
MudahUbah halaman utama menjadi class.
- Di
jobs/views.py, ganti fungsihomedenganHomeView, sebuahViewyangget()-nya melakukan hal yang sama sepertihome. - Di
jobs/urls.py, arahkan rute""ke class tersebut. Pertahankanname="home".
Tekan Jalankan: halaman utama 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
2Tampilan Generik untuk Menampilkan Data
ListViewDetailViewLatihan sendiri: Playground Django