- 장고의 ListView에서 상속된 메서드로, 컨텍스트 데이터를 가져오고 반환하는 역할
- get_context_data를 오버라이드하여 컨텍스트에 추가적인 데이터를 포함할 수 있다.
[기본 타입]
class TestView(TemplateView):
def get_context_data(self, **kwargs):
context = super().get_context_data()
return context
[예시]
class PostDetail(DetailView):
model = Post
# template_name = 'blog/post_detail.html' # 모델_detail.html
# post 변수를 사용해서 템플릿에서 객체 접근 가능
def get_context_data(self, **kwargs):
context = super(PostDetail, self).get_context_data()
context['categories'] = Category.objects.all()
context['no_category_post_count'] = Post.objects.filter(category=None).count()
return context
📌 Class View를 작성하다 보면 Template에게 context변수들을 전달하기 위해서 get_context_data()메소드를 오버라이딩하여 사용
📌 주의할 점은 get_context_data()를 오버라이딩 한 후 super().get_context_data()를 꼭 작성
📌 get_context_data 메소드의 parameter : 인스턴스 자신을 가리키는 self와 (키워드)=(특정값)형태로 매개변수를 받는 kwargs
📌 kwargs는 기본적으로 매개변수를 입력받으면 딕셔너리 타입으로 받게 된다.
📌 클래스형 뷰에서 get_context_data()메소드 오버라이딩 → super().get_context_data() 를 실행하여, 기본적으로 view 인스턴스가 추가된, context를 반환받음 → 자신이 넣고자 하는 컨텍스트 코드 작성 → render_to_response함수를 위해 context 변수를 반환