본문 바로가기

인문학도 개발일지/웹프로그래밍

[수업노트] django 페이지네이션 - paginator

 

 

 

지난 수업을 이음

 

 

 

" 페이지네이션 "


웹서비스의 데이터가 일정 수준 이상 쌓이면

몇 개의 페이지로 나누어

이전/다음 페이지로 넘어갈 수 있도록 설정하는 것

 

 

 

 

 

 

 

" Paginator "


페이징 관리 클래스.

전체 데이터를 가지고 있으면서 각 페이지별 데이터를 반환해준다.

한 페이지에 몇 개의 데이터를 묶을지 지정해야 한다.

 

# Paginator(전체데이터, 한 페이지에 보여질 데이터수)

from django.core.paginator import Paginator

data_list = list('adfalksejrpqaodkdlkafjkjeqwormv')
print(len(data_list))

pn = Paginator(data_list, 5)    # 전체데이터, 한 페이지에 보여질 데이터수
print('총데이터수', pn.count)
print('총페이지수', pn.num_pages)  
print('페이지 범위', pn.page_range)

for page in pn.page_range:
    print(page, end='\t')

 

 

 

 

 

 

 

" 페이지 데이터 조회 "


# 각 페이지에 있는 데이터 조회
# paginator.page(페이지 번호) - 번포헤이지의 데이터들을 (Page객체로) 반환

# 총 페이지가 7페이지 일 때

page1 = pn.page(1)    
print(type(page1), page1)    # page: 그 페이지의 데이터를 관리
print("이전 페이지 유무", page1.has_previous())  
print("다음 페이지 유무", page1.has_next())
page7 = pn.page(7)  
print("이전 페이지 유무-7", page7.has_previous())  
print("다음 페이지 유무-7", page7.has_next())