[Django] get_context_data

형이·2023년 11월 14일

Python

목록 보기
29/34
post-thumbnail

📝 Django

🖥️ 1. get_context_data

  • 장고의 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 변수를 반환


출처 : [Django] get_context_data() 메소드의 작동원리

0개의 댓글