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ş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.

challenge icon

Görev

Kolay

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

  • jobs/views.py içinde home işlevini, get() yöntemi home işlevinin yaptığı işi yapan bir View olan HomeView ile değiştir.
  • jobs/urls.py iç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