Menu
CoddyTech

Dodawanie do kontekstu

Część sekcji Widoki oparte na klasach ścieżki Django w Coddy. Lekcja 3 z 18.

Strona główna również może być widokiem TemplateView, z tym że jej szablon potrzebuje danych. Zmienne przekazywane do szablonu to jego kontekst, a widok generyczny tworzy je w metodzie get_context_data(). Nadpisz ją, aby dodać własne dane. Strona z przepisami zlicza szybkie przepisy:

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

Trzy kroki, zawsze takie same: super().get_context_data(**kwargs) pobiera słownik utworzony przez Django, dodajesz własne klucze, a następnie return zwraca słownik. Szablon otrzymuje to, co zwraca ta metoda.

Zapytanie znajduje się wewnątrz metody, więc jest wykonywane przy każdym żądaniu. Jako atrybut klasy byłoby wykonywane raz, podczas uruchamiania serwera, a liczba nigdy by się nie zmieniała.

challenge icon

Wyzwanie

Łatwy

Szablon strony głównej pokazuje teraz również najnowszą ofertę pracy. W pliku jobs/views.py przepisz HomeView jako TemplateView dla jobs/home.html, bez metody get(). Jego kontekst zawiera count, czyli liczbę ofert pracy, oraz latest — ofertę z najnowszą datą posted.

Naciśnij „Uruchom”: na stronie głównej pojawią się komunikaty 12 jobs open i Newest: Python Developer at Brightline.

Spróbuj swoich sił

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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Widoki oparte na klasach

Poćwicz samodzielnie: Edytor online Django