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:  # 如果分頁的數目大於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())
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">&raquo;</span>
      </a>
    </li>
  </ul>
</nav>

</body>
</html>
index

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM