인프런 커뮤니티 질문&답변

Myeunguk Jo님의 프로필 이미지

작성한 질문수

파이썬 사용자를 위한 웹개발 입문 A to Z Django + Bootstrap

안녕하세요 수업 잘 봤습니다! 템플릿 상속에 대한 팁이 필요합니다!

20.03.13 13:07 작성

·

178

0

템플릿 상속에 대한 개념을 잘 이해했습니다. 다만, 적용해서 만들 때 문제가 생겨서 문의드립니다.

제가 하려는 건 

왼쪽 사이드 바에는 post 리스트를 쭉 추가하고 (for문을 이용해서 p.title만 호출해 각 href= detail page/{}로 연결)

오른쪽 화면에는 detail page가 호출되게 하는 것입니다. 

그래서 base.html에는 for문을 이용해 리스트가 잘 호출되었는데, 이를 유지한 채 detail page가 호출되면 리스트는 호출되지 않고, detail page의 내용만 호출됩니다. (디테일 페이지에서는 object.content로 표현했습니다.) 

아마도 object list에서 object들을 불러오는 것과 단일 object.content를 불러오는게 충돌해서 list는 안 불러와지는거 같은데, 어떻게 해야 동시에 불러올 수 있을까요? 

답변 2

1

SungYong Lee님의 프로필 이미지
SungYong Lee
지식공유자

2020. 03. 15. 20:13

제 강의와 똑같이 views.py가 되어 있다는 전제하에 말씀드리겠습니다. 

아래는 PostDetail 입니다. 

class PostDetail(DetailView):
    model = Post

    def get_context_data(self, *, object_list=None, **kwargs):
        context = super(PostDetail, self).get_context_data(**kwargs)
        context['category_list'] = Category.objects.all()
        context['posts_without_category'] = Post.objects.filter(category=None).count()
        context['comment_form'] = CommentForm()

        return context

post detail 페이지에서는 object_list가 무엇인지 정의되어 있지 않습니다. object_list는 PostList 클래스에서 자동으로 만들어지는 요소였죠.

DetailView를 이용해서 model = Post라고만 하면, object 만 자동으로 만들어집니다. 이 이외의 자료를 DB에서 가져오려면 get_context_data에서 가져와야 하죠. 

get_context_data 안에

context['object_list'] = Post.objects.all() 

를 추가해보세요. 

0

Myeunguk Jo님의 프로필 이미지
Myeunguk Jo
질문자

2020. 03. 15. 20:48

와우 해결되었습니다!! 감사합니다. detail View에 object_list를 안 가져와서 그런거였군요!