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

challenge icon

Görev

Kolay

Ana 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"
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