반응형
2021.12.14 - [Study/Django] - [Django] Django 클래스형 뷰 ( Generic View- ListView) # 3
이번엔 제네릭 뷰에서 DetailView 사용법에 대해 알아보겠습니다.
def page_detail(request, page_id):
page = Page.objects.get(id=page_id)
context = {'object': page}
return render(request, 'diary/page_detail.html', context=context)
위 코드는 상세정보를 보여주는 DetailView를 함수 뷰로 구현한 것입니다.
page = Page.objects.get(id=page_id)를 통해 page에 쿼리 셋을 넣어주고, context로 전달할 값을 넣습니다.
그 후 render를 통해 페이지를 렌더링해 보여주는 방식으로 작동하게 됩니다.
from django.views.generic import DetailView
class PageDetailView(DetailView):
model = Page
template_name = 'diary/page_detail.html'
pk_url_kwarg = 'page_id'
context_object_name = 'pages'
위 코드는 처음 작성했던 함수 뷰를 클래스 뷰로 바꾼 것입니다.
제네릭 뷰의 정해진 변수에 값을 넣어주기만 하면 되는데요.
이때 pk_url_kwarg는 path 함수로부터 전달받을 pk의 키워드 이름을 작성합니다.
model = <사용할 모델>
template_name = <랜더링 할 Template>
pk_url_kwarg = <데이터를 조회할 조건(key)>
반응형
'Study > Django' 카테고리의 다른 글
[Django] Django 클래스형 뷰 ( Generic View- DeleteView) # 6 (0) | 2021.12.14 |
---|---|
[Django] Django 클래스형 뷰 ( Generic View- UpdateView) # 5 (0) | 2021.12.14 |
[Django] Django 클래스형 뷰 ( Generic View- ListView) # 3 (0) | 2021.12.14 |
[Django] Django 클래스형 뷰 ( Generic View - CreateView) # 2 (0) | 2021.12.14 |
[Django] Django 클래스형 뷰 ( Class-Based Views ) # 1 (0) | 2021.12.14 |