Paginate with Django

 https://simpleisbetterthancomplex.com/tutorial/2016/08/03/how-to-paginate-with-django.html


from django.contrib.auth.models import User from django.core.paginator import Paginator user_list = User.objects.all() paginator = Paginator(user_list, 10)



Input
OutputType
paginator.count53<type 'int'>
paginator.num_pages6<type 'int'>
paginator.page_rangexrange(1, 7)<type 'xrange'>
paginator.page(2)<Page 2 of 6><class 'django.core.paginator.Page'>

users = paginator.page(2)



Pagination with Function-Based Views


views.py
from django.contrib.auth.models import User from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger def index(request): user_list = User.objects.all() page = request.GET.get('page', 1) paginator = Paginator(user_list, 10) try: users = paginator.page(page) except PageNotAnInteger: users = paginator.page(1) except EmptyPage: users = paginator.page(paginator.num_pages) return render(request, 'core/user_list.html', { 'users': users })


user_list.html
<table class="table table-bordered"> <thead> <tr> <th>Username</th> <th>First name</th> <th>Email</th> </tr> </thead> <tbody> {% for user in users %} <tr> <td>{{ user.username }}</td> <td>{{ user.first_name }}</td> <td>{{ user.email }}</td> </tr> {% endfor %} </tbody> </table> {% if users.has_other_pages %} <ul class="pagination"> {% if users.has_previous %} <li><a href="?page={{ users.previous_page_number }}">&laquo;</a></li> {% else %} <li class="disabled"><span>&laquo;</span></li> {% endif %} {% for i in users.paginator.page_range %} {% if users.number == i %} <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li> {% else %} <li><a href="?page={{ i }}">{{ i }}</a></li> {% endif %} {% endfor %} {% if users.has_next %} <li><a href="?page={{ users.next_page_number }}">&raquo;</a></li> {% else %} <li class="disabled"><span>&raquo;</span></li> {% endif %} </ul> {% endif %}


 Bootstrap  

views.py

class UserListView(ListView): model = User template_name = 'core/user_list.html' # Default: <app_label>/<model_name>_list.html context_object_name = 'users' # Default: object_list paginate_by = 10 queryset = User.objects.all() # Default: Model.objects.all()


user_list.html
<table class="table table-bordered"> <thead> <tr> <th>Username</th> <th>First name</th> <th>Email</th> </tr> </thead> <tbody> {% for user in users %} <tr> <td>{{ user.username }}</td> <td>{{ user.first_name }}</td> <td>{{ user.email }}</td> </tr> {% endfor %} </tbody> </table> {% if is_paginated %} <ul class="pagination"> {% if page_obj.has_previous %} <li><a href="?page={{ page_obj.previous_page_number }}">&laquo;</a></li> {% else %} <li class="disabled"><span>&laquo;</span></li> {% endif %} {% for i in paginator.page_range %} {% if page_obj.number == i %} <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li> {% else %} <li><a href="?page={{ i }}">{{ i }}</a></li> {% endif %} {% endfor %} {% if page_obj.has_next %} <li><a href="?page={{ page_obj.next_page_number }}">&raquo;</a></li> {% else %} <li class="disabled"><span>&raquo;</span></li> {% endif %} </ul> {% endif %}

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

สอนเขียน Python เพื่อใช้ SSH ด้วย Paramiko และ Netmiko แบบรวบรัด

เริ่มพัฒนา Web Application กับภาษา Python ด้วย Django Framework

ตัวอย่างที่น่าสนใจ