2021.12.14 - [Study/Django] - [Django] Django 클래스형 뷰 ( Generic View - CreateView) # 2
[Django] Django 클래스형 뷰 ( Generic View - CreateView) # 2
2021.12.14 - [Study/Django] - [Django] 장고 유저 기능 구현하기 #1 (allauth와 contrib.auth의 차이) [Django] 장고 유저 기능 구현하기 #1 (allauth와 contrib.auth의 차이) Django에는 기본적으로 유저 기능..
programmers-sosin.tistory.com
저번 게시글에서는 CRUD 기능 중 Create 기능을 구현하는 CreateView를 사용하는 방법에 대해 다뤄봤습니다.
이번 게시글에서는 Read 기능 중 하나인 ListView를 구현해보겠습니다!
def page_list(request):
object_list = Page.objects.all()
paginator = Paginator(object_list, 8)
curr_page_num = request.GET.get('page')
if curr_page_num is None:
curr_page_num = 1
page = paginator.page(curr_page_num)
return render(request, 'diary/page_list.html', {'page': page})
위 코드는 함수 뷰로 만든 Read 기능을 구현한 것입니다.
from django.views.generic import ListView
class PageListView(ListView):
model = Page
template_name = 'diary/page_list.html'
context_object_name = 'diary'
ordering = ['-dt_created']
paginate_by = 6
page_kwarg = 'page'
그리고 이 코드가 제네릭 뷰 중 ListView를 사용해서 만든 것입니다.
딱 봐도 아래의 코드가 더 간결하고 보기 편한 걸 알 수 있는데요.
저번 게시글에서 제네릭 뷰는 필요한 값들을 정해진 변수에 입력받는 형식으로 사용한다고 했는데 그것과 같습니다.
위 코드를 정리해보자면 아래와 같습니다.
model = <사용할 모델>
template_name = <랜더링 할 Template>
context_object_name = <템플릿 파일에서 사용할 컨텐스트 변수명을 지정> [ defulat = 'object_list' ]
ordering = [<생성일을 최신순으로 정렬>]
paginate_by = <한 페이지에 보여줄 데이터 수>
page_kwarg = <쿼리 스트링의 페이지 키워드>
제네릭 뷰를 사용하면서 느낀 점은 처음에 그냥 함수 뷰를 사용해서 만드는 것보다 정말 훨씬 간결하고 편했다는 것입니다.
하지만 확실히 함수 뷰를 공부하지 않고 바로 클래스 뷰부터 배워서 쓰려고 했으면 어려웠을 것 같고, 기본 구조 이해도 어려웠을 것 같습니다. :)
'Study > Django' 카테고리의 다른 글
[Django] Django 클래스형 뷰 ( Generic View- UpdateView) # 5 (0) | 2021.12.14 |
---|---|
[Django] Django 클래스형 뷰 ( Generic View- DetailView) # 4 (0) | 2021.12.14 |
[Django] Django 클래스형 뷰 ( Generic View - CreateView) # 2 (0) | 2021.12.14 |
[Django] Django 클래스형 뷰 ( Class-Based Views ) # 1 (0) | 2021.12.14 |
[Django] django.core.exceptions.ImproperlyConfigured Error (0) | 2021.12.12 |