Menu
CoddyTech

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.

challenge icon

Görev

Kolay

Ana sayfayı bir sınıfa dönüştür.

  1. jobs/views.py içinde home işlevini, home işlevinin yaptığını yapan bir get() metoduna sahip View alt sınıfı HomeView ile değiştir.
  2. jobs/urls.py iç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