[Django] 장고에서의 페이징 처리

2024. 8. 12. 11:56· Django/DRF
목차
  1. PageNumberPagination
  2. LimitOffsetPagination
  3. CursorPagination
  4. 페이징 방식 장단점
  5. Custom Pagination
  6. PageNumberPagination 클래스 동적 생성
  7. LimitOffset 클래스 동적 생성
  8. CursorPagination 클래스 동적 생성
반응형

페이징은 대용량 데이터를 효율적으로 관리하고 사용자에게 빠르게 제공하기 위해서 필수적인 기능이다. 장고에서는 3가지 페이징 기법을 제공한다.

 

요청하는 방식으로 나눌 수 있다.

  • PageNumberPagination (오프셋 방식)
  • LimitOffsetPagination (오프셋 방식)
  • CursorPaagination (커서 방식)

 

 

PageNumberPagination

가장 기본적인 페이징 기법으로, 페이징 번호를 기반으로 데이터를 나눈다. 사용자는 쿼리 파라미터를 통해 페이지를 이동할 수 있으며, 페이지 크기를 전역으로 지정하여 모든 API에서 동일한 크기의 페이지를 적용할 수 있다.

REST_FRAMEWORK = {
    "PAGE_SIZE": 10,
    "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination",
}

 

 

LimitOffsetPagination

Limit와 Offset을 이용하여 데이터를 페이지 단위로 나누는 방식이다. 특정 범위의 데이터를 요청할때 유용하다.

REST_FRAMEWORK = {
    "PAGE_SIZE": 10,
}

설정에서 PAGE_SIZE를 설정해주고 아래와 같이 pagination_class를 정의해주면 된다.

from rest_framework.pagination import LimitOffsetPagination

class PostListAPI(ListAPIView):
	queryset = Post.objects.all().order_by("-id")
	serializer_class = PostSerializer
	
    	pagination_class = LimitOffsetPagination

 

 

CursorPagination

커서를 사용하여 데이터를 페이지 단위로 나누는 방식이다. 커서 값을 이용하여 다음 페이지로 이동할 수 있으며, 'id'와 같은 고유한 필드를 기반으로 정렬해주어야한다.

class PkCursorPagination(CursorPagination):
    ordering = "-id"

 

 

페이징 방식 장단점

방식 장점 단점
PageNumberPagination 설정이 간단하고 직관적이다 페이지 번호가 클 경우 성능 저하 가능성
LimitOffsetPagination 특정 위치에서 데이터를 시작할 수 있어, 유연성이 높다 큰 오프셋을 처리할 때 성능 저하 가능성
CursorPagination 대용량 데이터 처리에 최적화, 안정적 커서 관리가 복잡할 수 있다.

 

 

Custom Pagination

PageNumberPagination 클래스 동적 생성

 

make_pagination_class 함수를 통한 PageNumberPagination 클래스 동적 생성 및 활용 · jong-seoung/course-django-comp

jong-seoung committed Aug 12, 2024

github.com

 

LimitOffset 클래스 동적 생성

 

make_pagination_class 함수를 통한 LimitOffsetPagination 클래스 동적 생성 및 활용 · jong-seoung/course-django-com

jong-seoung committed Aug 12, 2024

github.com

 

CursorPagination 클래스 동적 생성

 

make_pagination_class 함수를 통한 CursorPagination 클래스 동적 생성 및 활용 · jong-seoung/course-django-complete

jong-seoung committed Aug 12, 2024

github.com

 

 

출처

 

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준) 강의 | 이진석 - 인프런

이진석 | 파이썬/장고 웹서비스 개발의 기초를 탄탄히 다져보세요. 장고 학습에는 시간도 걸리지만, 반복되는 개발 속에 여러분의 생산성을 극대화하실 수 있습니다. 여러분의 상상을 현실로 만

www.inflearn.com

 

 

반응형
저작자표시 (새창열림)

'Django > DRF' 카테고리의 다른 글

[DRF] Django REST framework의 권한 관리  (0) 2024.09.12
[Django] 캐시 API  (0) 2024.08.21
[Django] 배포 시 에러 로그와 관리자 이메일 발송  (0) 2024.08.07
[DRF] nested serializer 사용 방법  (0) 2024.07.03
[Django] admin.ModelAdmin 메서드 정리  (0) 2024.07.03
  1. PageNumberPagination
  2. LimitOffsetPagination
  3. CursorPagination
  4. 페이징 방식 장단점
  5. Custom Pagination
  6. PageNumberPagination 클래스 동적 생성
  7. LimitOffset 클래스 동적 생성
  8. CursorPagination 클래스 동적 생성
'Django/DRF' 카테고리의 다른 글
  • [DRF] Django REST framework의 권한 관리
  • [Django] 캐시 API
  • [Django] 배포 시 에러 로그와 관리자 이메일 발송
  • [DRF] nested serializer 사용 방법
Jong_seoung
Jong_seoung
기록하자, 머리는 생각하는 곳이지 저장장치가 아니다.
반응형
Jong_seoung
Today_developStory
Jong_seoung
전체
오늘
어제

블로그 메뉴

  • Home
  • Git Hub
  • 분류 전체보기 (351)
    • Theory (16)
    • Java (3)
      • 알고리즘 (2)
      • 문법 (0)
    • Spring (7)
      • 스프링 입문 (6)
      • PickTalk (0)
      • 에러처리 (1)
    • Python (80)
      • 알고리즘 - 이론 (17)
      • 알고리즘 - 내장함수, 라이브러리 등등 (3)
      • 알고리즘 - 백준 (53)
      • 나도코딩 정리 (2)
      • 기타 (5)
    • Django (159)
      • DRF (105)
      • 인프라 (46)
      • DataBases (2)
      • API Docs (6)
    • FrontEnd (22)
      • htmx (2)
      • React (8)
      • 자바스크립트 (12)
    • GIT (16)
    • 기타 (8)
      • 정리 (2)
      • Flutter (1)
      • 마이크로프로세서 - ATmega128 (2)
      • 개발환경 세팅 (3)
    • 자격증 (37)
      • 정보처리기사 (19)
      • SQLD자격증 (18)

인기 글

최근 글

태그

  • alarm
  • BFS
  • CSRF
  • Django
  • django channels
  • django sse
  • django tutorial
  • django 배포
  • django 스웨거 적용
  • Django 이미지 저장

최근 댓글

hELLO · Designed By 정상우.v4.3.0
Jong_seoung
[Django] 장고에서의 페이징 처리
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.