首先你要先導入Paginator
from django.core.paginator import Paginator
你要再創建分頁對象 然后通過這個對象來調用分頁的所有的屬性
paginator = Paginator(book_list, 2) #設置每一頁顯示幾條 創建一個panginator對象
屬性:
print(Paginator.count) #總數據量 print(Paginator.num_pages) #分頁數 print(Paginator.page_range) #顯示的是頁數的標記 就是按鈕的數目
print(page2.has_next()) #是否有下一頁 print(page2.next_page_number()) #下一頁的頁碼 print(page2.has_previous()) #是否有上一頁 print(page2.previous_page_number()) #上一頁的頁碼
print(paginator.count) #通過你創建的對象來調用pangnator的屬性 這個是統計總數 print(paginator.num_pages) #因為你上面設置了每一頁顯示兩條 這個分頁就會是總數除去每一頁的顯示的數量 print(paginator.page_range) book_list = paginator.page(1) #這個是對你的分頁的數據進行取值 去除你的分過后的第一頁 # book_list , paginator.page是取你的分頁后的某一頁 print(book_list)
做一個分頁的演示
urls:

from django.contrib import admin from django.urls import path from one import views urlpatterns = [ path('admin/', admin.site.urls), # path('login/',views.login,name = 'login'), # path('index/' ,views.index, name='index' ), # path('add/',views.adduser, name='add'), # path('logout/',views.logout) path('index/',views.index), ]
views:

from one.models import Book from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger def index(request): # book_list = [] # for i in range(100): # # # book = Book(title = 'book_%s'%i,price = i*i) # # book_list.append(book) # book = Book(title = 'book_%s'%i,price = i*i) # book_list .append(book) # # Book.objects.bulk_create(book_list) #builk_create 是批量創建數據 # print(Paginator.count) #總數據量 # print(Paginator.num_pages) #分頁數 # print(Paginator.page_range) #顯示的是頁數的標記 就是按鈕的數目 book_list = Book.objects.all() paginator = Paginator(book_list, 2) #設置每一頁顯示幾條 創建一個panginator對象 # try: # current_num = int(request.GET.get('page',1)) # # book_list = paginator.page(current_num) # print(paginator.count) #通過你創建的對象來調用pangnator的屬性 這個是統計總數 # print(paginator.num_pages) #因為你上面設置了每一頁顯示兩條 這個分頁就會是總數除去每一頁的顯示的數量 # print(paginator.page_range) # book_list = paginator.page(1) #這個是對你的分頁的數據進行取值 去除你的分過后的第一頁 # # book_list , paginator.page是取你的分頁后的某一頁 # print(book_list) book_list = Book.objects.all() paginator = Paginator(book_list, 2) # 設置每一頁顯示幾條 創建一個panginator對象 try: current_num = int(request.GET.get('page',2)) #當你在url內輸入的?page = 頁碼數 顯示你輸入的頁面數目 默認為第2頁 book_list = paginator.page(current_num) except EmptyPage: book_list = paginator.page(4) #當你輸入的page是不存在的時候就會報錯 if paginator.num_pages > 11: # 如果分頁的數目大於11 if current_num - 5 < 1: # 你輸入的值 pageRange = range(1, 11) # 按鈕數 elif current_num + 5 > paginator.num_pages: # 按鈕數加5大於分頁數 pageRange = range(current_num - 5, current_num + 1) # 顯示的按鈕數 else: pageRange = range(current_num - 5, current_num + 6) # range求的是按鈕數 如果你的按鈕數小於分頁數 那么就按照正常的分頁數目來顯示 else: pageRange = paginator.page_range() # 正常分配 return render(request,'index_one.html',locals())
index:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.1.0/css/bootstrap.css"> </head> <body> <h3>INDEX</h3> <ul> {% for book in book_list %} <li>{{ book.title }}---{{ book.price }}</li> {% endfor %} </ul> <nav aria-label="Page navigation"> <ul class="pagination"> {% if book_list.has_previous %} <li><a href="?page={{ book_list.previous_page_number }}" aria-label="Previous"><span aria-hidden="true">上一頁</span></a></li> {% else %} <li class="disabled"><a href="" aria-label="Previous"><span aria-hidden="true">上一頁</span></a></li> {% endif %} {# disabled是當你的按鈕不滿足的時候不可以點擊了#} {% for i in pageRange %} {% if current_num == i %} <li class="active"><a href="?page={{ i }}">{{ i }}</a></li> {% else %} <li><a href="?page={{ i }}">{{ i }}</a></li> {% endif %} {% endfor %} <li> <a href="#" aria-label="Next"> <span aria-hidden="true">»</span> </a> </li> </ul> </nav> </body> </html>