happyso
study with happyso
happyso
전체 방문자
오늘
어제
  • 분류 전체보기 (302)
    • GIT (3)
    • 컴퓨터 기본 개념 (29)
    • 알고리즘 (125)
      • 알고리즘 문제 (115)
      • 알고리즘 개념 (10)
    • Go (2)
    • 클라우드 (54)
      • DevOps (4)
      • Kubernetes(쿠버네티스) (33)
      • AWS (6)
      • CKA (8)
    • 리눅스(Linux) (18)
      • 컨테이너(Container) (8)
    • Front (22)
      • JavaScript (2)
      • React (20)
    • Python (21)
      • Python 웹 크롤링 (11)
      • Django (7)
      • MachineLearning (3)
    • 데이터베이스 (6)
      • MariaDB (2)
      • MongoDB (4)
    • C언어 (5)
    • Trouble Shooting (2)
    • 네트워크 (8)
      • CCNA (5)
    • 보안 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • replace
  • apply
  • edit
  • 18
  • 15
  • kubernetes
  • Patch

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
happyso

study with happyso

페이지네이션
Python/Django

페이지네이션

2020. 8. 11. 10:21

https://docs.djangoproject.com/en/3.0/topics/pagination/

 

Pagination | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

1. html파일 생성

 

[pagination.html]

<nav aria-label="Page navigation example" >
    <ul class="pagination">

        <li class="page-item">
            {% if page.has_previous %}
                <a class="page-link" href="?page={{page.previous_page_number}}">Previous</a>
            {% endif %}

        </li>

        <li class="page-item">
            <a class="page-link">Page {{page.number}} of {{page.paginator.num_pages}}</a>
        </li>

        <li class="page-item">
            {% if page.has_next %}
                <a class="page-link" href="?page={{page.next_page_number}}">Next</a>
            {% endif %}
        </li>
    </ul>
</nav>

 

 

2. Python Console 창 명령어 입력을 통해 먼저 연습해본다.

from django.core.paginator import Paginator
objects = ['aa','bb','cc','dd','ee']
objects
#['aa', 'bb', 'cc', 'dd', 'ee']
paginator = Paginator(objects,2)
paginator.count
#5
paginator.num_pages
#3
paginator.page_range
#range(1, 4)
page1 = paginator.page(1)
page1
#<Page 1 of 3>
page1.object_list
#['aa', 'bb']
page2 = paginator.page(2)
page2.object_list
#['cc', 'dd']
page2
#<Page 2 of 3>
page3 = paginator.page(3)
page3.object_list
#['ee']
page1.has_next()
#True
page2.has_previous()
#True
page2.next_page_number()
#3
page3.start_index()
#5
page3.end_index()
#5

 

 

3. Views.py 수정

- import추가

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

 

- def post_list 수정

def post_list(request):
    # posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    # return render(request, 'blog/post_list.html', {'posts': posts})
    
    post_list = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    paginator = Paginator(post_list, 2)
    page = request.GET.get('page')
    
    try:
        posts = paginator.page(page)
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)
    return render(request, 'blog/post_list.html', {'posts': posts})

 

4. post_list.html 수정

- {% include 'blog/pagination.html' with page=posts %} 추가

 

{% extends 'blog/base.html' %}

{% block content%}
    {% for post in posts %}
        <div class="post">
            <div class="date">
                <p>published : {{post.published_date}}</p>
            </div>
                <h1><a href="{% url 'post_detail_test' pk=post.pk %}">{{post.title}}</a></h1>
                <a href="{% url 'post_detail_test' pk=post.pk %}">Comments: {{post.approved_comments.count}}</a>
        </div>
        {% empty %}
            <div>요청하신 Post가 존재하지 않습니다. </div>
    {% endfor %}

    {% include 'blog/pagination.html' with page=posts %}
{% endblock %}

 

5. 결과 화면

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

[vscode django세팅] vscode에서 django 사용하기  (0) 2020.11.01
django 와 mongodb연동  (0) 2020.08.17
Django 댓글기능 추가  (0) 2020.08.07
Django 템플릿 상속 / 게시판 만들기  (0) 2020.08.06
Django (Migrate / URLConf / View / Template / QuerySet / Bootstrap)  (0) 2020.08.05
    'Python/Django' 카테고리의 다른 글
    • [vscode django세팅] vscode에서 django 사용하기
    • django 와 mongodb연동
    • Django 댓글기능 추가
    • Django 템플릿 상속 / 게시판 만들기
    happyso
    happyso

    티스토리툴바