초보 개발자

pagenation 1 본문

Python/airbnb 클론

pagenation 1

taehyeki 2022. 2. 5. 22:04

방들을 쫙 나열하는 것 보다, 한 페이지에 10개씩 보여주는 것이 좋다. 그러기 위해선 페이지네이션을 만들어야 한다.

먼저 django에서 제공하는 페이지네이션을 사용하기전에 수동으로 만들어 어떤 로직으로 만들어 지는지 알아보자

먼저 page_num은 ?page=1 이런식으로 url에 담겨오는 정보를 받아오는 것이다.

만약 이 정보가 공백 이거나 /?page= 혹은 빈값이라면 / 1이 담기도록 int( or 1) 을 적어준 것이다. 

page_size는 10개씩 보여주기 위함이고, limit은 페이지에 따라 다음 정보를 보여주기 위함이다. offset은 limit에서 10을 뺀 값이다.

 

rooms를 보면 page_num의 값에 따라 다른 limit값과 offset값이 들어가는 것을 확인할 수 있다.

page_cnt는 all_rooms를 사용하여 전체 페이지 수를 나타낼 수 있다.

 

이러한 정보를 다 context에 담아서 보내주면

여기서 받아온다. 

위와 같이 나타나는데, 만약 1이라면 previous가 보이지 않도록 if문을 달았고 반대로 마지막 페이지라면 next가 보이지 않도록 하였다. 그리고 a태그에 1을 더하거나 1을 빼주는 걸 넣어주었는데 이건 django template tag이다. 여러 가지가 있지만 여기선 add를 사용하여 더하고 빼주는 것을 사용해서 서버로 -1,+1의 값을 전송해주는 역할을 하였다.

 

다음에는 django에서 제공하는 기능을 사용하여 좀 더 쉽게 작성해보자.

'Python > airbnb 클론' 카테고리의 다른 글

listview  (0) 2022.02.06
pagenation 2  (0) 2022.02.06
extend base.html, include  (0) 2022.02.05
url, views  (0) 2022.02.05
django-seed  (0) 2022.02.04