기록하는 개발자

[Django] Paginator 본문

Web/Django

[Django] Paginator

밍맹030 2021. 6. 5. 15:05
728x90

<paginator>


-paginator는 장고에서 기본적으로 제공해준다.

 

기존 코드 : home.html에서 blog.objects.all 로 쿼리셋 전체를 보낸다.

수정된 코드 : 페이지네이터를 사용하여 원하는 개수만큼 페이지를 쪼개서 보낸다.

1. blog app의 views.py 수정

from django.shortcuts import render, redirect,get_object_or_404
from django.utils import timezone
from django.core.paginator import paginator #추가된 코드
from .models import Blog

def home(request):
    #import 해 온 models.py에서 Blog 객체를 모두 가져와서 blogs에 저장
    blogs=Blog.objects.all
    
    #---추가된 코드
    paginator = Paginator(blogs, 3)
    page = request.GET.get('page')
    blogs=paginator.get_page(page)
    #--- --- --- --- --- --- --- ---
    return render(request,'home.html',{'blogs' : blogs})

blogs=paginator.get_page(page) 부분에서 아래와 같은 에러가 자꾸 발생하는데 해결을 못했다.

해결 방법을 아시는 분은 댓글 부탁드립니다 :(

Python TypeError: object of type ‘NoneType’ has no len()


<home.html>

아래 코드 body 태그 가장 하단 부분(게시글 포함하는 div 아래)에 추가

{% if blogs.has_previous%}
    <a href="?page=1">처음</a>
    <a href="?page={{blogs.previous_page_number}}">이전</a>
{% endif %}  
    <span>{{blogs.number}}</span>
    <span>of</span>
    <span>{{blogs.paginator.num_pages}}</span>
{% if blogs.has_next%}
    <a href="?page={{blogs.next_page_number}}">처음</a>
    <a href="?page={{blogs.paginator.num_pages}}">마지막</a>
{% endif %}  

 

728x90

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

[Django] 사용자 확장  (0) 2021.06.02
[Django] 로그인 및 회원가입 구현  (0) 2021.06.02
[Django] Form  (0) 2021.05.27
[Django] media  (0) 2021.05.27
[Django] static  (0) 2021.05.27