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şturulur ve ana sayfası, şimdiye kadarki tüm görünümler gibi bir işlev görünümüdür. Django, görünümü sınıf olarak yazmanıza da olanak tanır: View sınıfını alt sınıflara ayırır ve her HTTP yöntemi için bir yöntem eklersiniz. Bir GET isteği get() yöntemini, bir POST isteği ise post() yöntemini çağırır.
from django.views import View
class RecipeCountView(View):
def get(self, request):
total = Recipe.objects.count()
return HttpResponse(f"{total} recipes")Yöntem, 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 rotanın bir işleve ihtiyacı vardır 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 eşleşen yöntemi çağırır.
Bu örnekteki POST gibi, sınıfın tanımlamadığı bir yöntem için 405 Method Not Allowed yanıtı alınır. Asıl faydası sonraki bölümde ortaya çıkar: 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,get()yöntemihomeişlevinin yaptığı işi yapan birViewolanHomeViewile değiştir.jobs/urls.pyiçinde""rotasını sınıfa yönlendir.name="home"değerini koru.
Çalıştır 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