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, ale jej szablon potrzebuje danych. Zmienne przekazywane do szablonu tworzą jego kontekst, a widok ogólnego przeznaczenia tworzy je w metodzie get_context_data(). Nadpisz ją, aby dodać własne dane. Serwis 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 zostałoby wykonane raz, przy uruchomieniu serwera, a liczba nigdy by się nie zmieniła.
Wyzwanie
ŁatwySzablon strony głównej wyświetla teraz także najnowszą ofertę pracy. Napisz ponownie HomeView:
TemplateViewdlajobs/home.html, bez metodyget().- Dodaje do kontekstu
count— liczbę ofert pracy — orazlatest— ofertę z najnowszą datąposted.
Naciśnij Run: strona główna wyświetla 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