Django的分页器(paginator)
生活随笔
收集整理的這篇文章主要介紹了
Django的分页器(paginator)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
?
首先你要先導入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),] View Code?
?
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: # 如果分頁的數目大于11if 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()) Views?
?
?
?
?
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> index?
轉載于:https://www.cnblogs.com/zhaoyunlong/p/9287660.html
總結
以上是生活随笔為你收集整理的Django的分页器(paginator)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos7 编译安装mysql-5.
- 下一篇: centos7安装redmine3,并升