Menu
CoddyTech

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.

challenge icon

Görev

Kolay

Ana sayfa şablonu artık en yeni işi de gösteriyor. HomeView sınıfını yeniden yaz:

  • jobs/home.html için get() yöntemi olmayan bir TemplateView.
  • Bağlama, işlerin sayısı olan count değerini ve posted tarihi en yeni olan işi belirten latest değ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"
quiz iconKendini test et

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