페이징 기능

Red_Panda·2021년 3월 24일
0

게시물이 많을 경우 페이징 기능으로 1 페이지당 게시물 개수를 제한하는게 좋다.
만약 한 페이지에 모든 게시물을 나타낼 경우, 로딩시간도 오래걸리고, 스크롤바도 내려야 하는 불편함이 생긴다.

페이징 기능을 테스트하기위해, flask shell을 이용하여임시 게시물을 만들어준다. 먼저 cmd에서 flask shell을 실행하고, 아래와 같이 입력해준다.


flask를 실행해 페이지에 가보면 데이터가 추가 됐다.

이제 question_views.py 파일내 _list 함수에 페이징 기능을 추가한다.

page = request.args.get('page', type=int, default=1)

localhost:5000/question/list/?page=n
페이지 값 n을 가져올때 사용한다. 페이지 값이 없을땐 default값인 1로 가져온다.

question_list = question_list.paginate(page, per_page=20)

question_list에 함수 paginate을 이용해 페이징을 적용한다.
paginate(a,b) :
a = 현재 조회할 페이지 번호
b = 페이지마다 보여줄 게시물 개수

paginate 함수는 조회한 데이터를 감싸 Pagination 객체로 반환한다. Pagination 객체는 다음과 같은 속성을 사용할 수 있어 페이징 처리가 쉬워진다.

item : 현재 페이지에 해당하는 게시물 리스트
total : 전체 게시물 수
per_page : 페이지당 보여줄 게시물 수
page : 현재 페이지 번호
iter_pages : 페이지 범위
prev_num / next_num : 이전/다음 페이지 번호
has_prev / has_next : 이전/다음 페이지 존재 여부 (True/False)

{% for question in question_list %}

question_list.html에서 위 코드를 아래와 같이 수정한다.

{% for question in question_list.items %} 

그리고 question_list.html 파일 /table 태그 밑에 내용을 추가한다.

내용은 위에서 말한 Pagination 객체를 이용한 함수들로 구성되어있다.
Pagnination 역시 부트스트랩 공식문서를 보고 코드를 작성하면 된다.

https://getbootstrap.com/docs/4.5/components/pagination/

profile
신입 개발자

0개의 댓글