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 contextTrzy 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.
Wyzwanie
ŁatwySzablon 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"
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
2Generyczne widoki wyświetlania
ListViewDetailViewPoćwicz samodzielnie: Edytor online Django