Context'e Ekleme
Coddy'nin Django Journey'sinin Sınıf Tabanlı Görünümler bölümünün bir parçası. Ders 3 / 18.
Ana sayfa da bir TemplateView olabilirdi; ancak şablonunun veriye ihtiyacı var. Bir şablonun aldığı değişkenler onun bağlamını oluşturur ve genel bir görünüm bunları bir yöntemde, get_context_data() içinde oluşturur. Kendininkileri eklemek için bu yöntemi geçersiz kıl. Bir tarif sitesi, hızlı tariflerinin sayısını hesaplar:
class RecipeHomeView(TemplateView):
template_name = "recipes/home.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["quick"] = Recipe.objects.filter(minutes__lte=30).count()
return contextÜç adım, her zaman aynı: super().get_context_data(**kwargs) Django'nun oluşturduğu sözlüğü alır, sen kendi anahtarlarını eklersin ve sözlüğü return edersin. Şablon, bu yöntemin döndürdüğü her şeyi alır.
Sorgu yöntemin içinde yer alır, bu nedenle her istekte çalışır. Bir sınıf niteliği olsaydı sunucu başlatıldığında bir kez çalışırdı ve sayı hiç değişmezdi.
Görev
KolayAna sayfa şablonu artık en yeni işi de gösteriyor. jobs/views.py içinde HomeView sınıfını, jobs/home.html için bir TemplateView olacak şekilde ve get() olmadan yeniden yaz. Bağlamına iş sayısını belirten count ve en yeni posted tarihine sahip işi belirten latest değerlerini ekle.
“Run” düğmesine bas: ana sayfada 12 jobs open ve Newest: Python Developer at Brightline yazar.
Kendin dene
from django.shortcuts import render
from django.views import View
from django.views.generic import TemplateView
from .models import Job
class HomeView(View):
def get(self, request):
count = Job.objects.count()
return render(request, "jobs/home.html", {"count": count})
class AboutView(TemplateView):
template_name = "jobs/about.html"
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Sınıf Tabanlı Görünümler bölümündeki tüm dersler
Kendi başına pratik yap: Django playground