Bir View Sınıfı
Coddy'nin Django Journey'sinin Sınıf Tabanlı Görünümler bölümünün bir parçası. Ders 1 / 18.
Bu bölümde bir iş ilanı panosu oluşturuluyor ve ana sayfası, şimdiye kadarki her görünüm gibi bir işlev görünümüdür. Django ayrıca bir görünümü sınıf olarak yazmanıza da olanak tanır: View sınıfından kalıtım alır ve her HTTP yöntemi için bir metot eklersiniz. GET isteği get() metodunu, POST isteği ise post() metodunu çağırır.
from django.views import View
class RecipeCountView(View):
def get(self, request):
total = Recipe.objects.count()
return HttpResponse(f"{total} recipes")Metot, bir işlev görünümünde olduğu gibi self, ardından request parametrelerini alır ve bir yanıt döndürür. Bir rota için işlev gerekir ve .as_view() sınıftan bir işlev oluşturur: path("count/", views.RecipeCountView.as_view()). Bu işlev, her istekte sınıfın yeni bir nesnesini oluşturur ve istekle eşleşen metodu çağırır.
Sınıfın tanımlamadığı bir yöntemi kullanan istekler, örneğin bu görünüme gönderilen bir POST isteği, 405 Method Not Allowed yanıtını alır. Asıl yararını bir sonraki bölümde göreceksiniz: Django, yaygın işleri zaten yapan sınıflarla birlikte gelir.
Görev
KolayAna sayfayı bir sınıfa dönüştür.
jobs/views.pyiçindehomeişlevini,homeişlevinin yaptığını yapan birget()metoduna sahipViewalt sınıfıHomeViewile değiştir.jobs/urls.pyiçinde""yolunu sınıfa yönlendir.name="home"değerini koru.
“Run” düğmesine bas: ana sayfada hâlâ 12 jobs open yazıyor.
Kendin dene
from django.shortcuts import render
from .models import Job
def home(request):
count = Job.objects.count()
return render(request, "jobs/home.html", {"count": count})
Sınıf Tabanlı Görünümler bölümündeki tüm dersler
Kendi başına pratik yap: Django playground