컨텍스트에 추가하기
Coddy Django 여정의 클래스 기반 뷰 섹션에 포함된 레슨. 18개 중 3번째.
홈 페이지도 TemplateView로 만들 수 있지만, 템플릿에 데이터가 필요합니다. 템플릿이 받는 변수는 컨텍스트이며, 일반 뷰는 get_context_data() 메서드에서 이를 구성합니다. 메서드를 재정의해 직접 추가하세요. 레시피 사이트에서는 빠르게 만들 수 있는 레시피 수를 셉니다.
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세 단계는 항상 같습니다. super().get_context_data(**kwargs)로 Django가 만든 딕셔너리를 가져오고, 직접 키를 추가한 다음, 딕셔너리를 return합니다. 템플릿은 이 메서드가 반환하는 값을 받습니다.
쿼리는 메서드 안에 있으므로 요청이 들어올 때마다 실행됩니다. 클래스 속성으로 지정하면 서버가 시작될 때 한 번 실행되고, 숫자는 절대 바뀌지 않습니다.
챌린지
쉬움홈 템플릿에 이제 최신 채용 공고도 표시됩니다. HomeView를 다시 작성하세요.
jobs/home.html을 위한TemplateView이며,get()은 사용하지 않습니다.- 채용 공고 수인
count와 가장 최근posted날짜의 채용 공고인latest를 컨텍스트에 추가합니다.
Run을 누르세요. 홈 페이지에 12 jobs open 및 Newest: Python Developer at Brightline이 표시됩니다.
직접 해보기
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"
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
클래스 기반 뷰의 모든 레슨
직접 연습해 보세요: Django 플레이그라운드