Menu
CoddyTech

컨텍스트에 추가하기

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합니다. 템플릿은 이 메서드가 반환하는 값을 받습니다.

쿼리는 메서드 안에 있으므로 요청이 들어올 때마다 실행됩니다. 클래스 속성으로 지정하면 서버가 시작될 때 한 번 실행되고, 숫자는 절대 바뀌지 않습니다.

challenge icon

챌린지

쉬움

홈 템플릿에 이제 최신 채용 공고도 표시됩니다. 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"
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

클래스 기반 뷰의 모든 레슨

직접 연습해 보세요: Django 플레이그라운드