SoShin_
소신
SoShin_
전체 방문자
오늘
어제
  • 분류 전체보기
    • Study
      • HTML | CSS
      • JavaScript
      • Django
      • Python
      • Flask
      • Git
      • Project
      • 이것저것
      • 코딩테스트
      • NestJS
    • Review
      • Book
      • Movie & Drama

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 영화리뷰
  • 장고 유저기능
  • openpyxl
  • FLASK
  • Django 유효성 검증
  • SQLAlchemy
  • 장고 allauth
  • 코딩테스트
  • 자바스크립트
  • JavaScript
  • KakaoAPI
  • orm
  • 문제풀이
  • 파이썬
  • flask orm
  • SQLite
  • allauth
  • db
  • Django
  • 영화추천
  • 유저기능
  • js
  • 위도경도
  • Python
  • Django allauth
  • 플라스크
  • node.js
  • MongoDB
  • 장고
  • 장고 제네릭뷰

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
SoShin_

소신

Study/Django

[Django] Django 클래스형 뷰 ( Generic View- ListView) # 3

2021. 12. 14. 15:00
반응형

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
    'Study/Django' 카테고리의 다른 글
    • [Django] Django 클래스형 뷰 ( Generic View- UpdateView) # 5
    • [Django] Django 클래스형 뷰 ( Generic View- DetailView) # 4
    • [Django] Django 클래스형 뷰 ( Generic View - CreateView) # 2
    • [Django] Django 클래스형 뷰 ( Class-Based Views ) # 1
    SoShin_
    SoShin_
    직접 쓰는 개발 블로그

    티스토리툴바