장고 페이지네이션 구현하기
## pagination 구현
(https://docs.djangoproject.com/en/1.10/topics/pagination/#django.core.paginator.Paginator)
```
from django.core.pagination import Paginator
p = Paginator(posts, 5) # 이런식으로 사용
```
- views/list.py를 수정해줘야함
```
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
# EmptyPage: 페이지가 범위를 넘어서면 (없는페이지인지)
# PageNotAnInteger: page parameter에 int가 아닌 타입이 들어오면
...
p = Paginator(posts, 5)
page = request.GET.get("page")
try:
posts = p.page(page)
except PageNotAnInteger:
posts = p.page(1)
except EmptyPage:
posts = p.page(p.num_pages)
...
```
- list templates 수정해주기 (페이지 표시)
```
<div class="pagination">
<span class="step-links">
{% if posts.has_previous %}
<a href="?page={{ posts.previous_page_number }}"> previous </a>
{% endif %}
<span class="current">
Page {{ posts.number }} of {{ posts.paginator.num_pages }}.
</span>
... # next도 previous와 똑같이 구현
</span>
</div>
```