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 olabilir; ancak şablonunun veriye ihtiyacı vardır. Şablonun aldığı değişkenler onun bağlamını oluşturur ve genel bir görünüm bunları get_context_data() adlı bir yöntemde oluşturur. Kendininkileri eklemek için bu yöntemi geçersiz kıl. Bir tarif sitesi, hızlı tariflerini sayar:
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 özniteliği olarak tanımlansaydı, sunucu başlatıldığında bir kez çalışır ve sayı asla değişmezdi.
Görev
KolayAna sayfa şablonu artık en yeni işi de gösteriyor. HomeView sınıfını yeniden yaz:
jobs/home.htmliçinget()yöntemi olmayan birTemplateView.- Bağlama, işlerin sayısı olan
countdeğerini vepostedtarihi en yeni olan işi belirtenlatestdeğerini ekler.
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