1. 程式人生 > >Django 使用Paginator分頁

Django 使用Paginator分頁

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger    
        subclass_s = models.subclass_details.objects.all() #查詢資料獲取一個列表
        paginator = Paginator(subclass_s,2)  #使用Paginator對列表進行分頁,我每頁行數設定是2
        page = request.GET.get('page') #網頁使用列如127.0.0.1:8000?page=1 獲取請求的頁數
        
try: page = int(page) #我設定了使用者在前端輸入頁碼跳轉,保證使用者輸入的是數字 except: page = 1 #輸入非數字跳轉第一頁 if page == None : # 沒有輸入跳轉第一頁 page = 1 try: subclass_s = paginator.page(page) #這裡是進行跳轉的操作 except PageNotAnInteger: subclass_s = paginator.page(1) #如果輸入是錯誤的跳轉第一頁
except EmptyPage: #如果輸入的超出頁碼數跳轉最後一頁 subclass_s = paginator.page(paginator.num_pages) return render(request,'xproject/subclass_details.html',locals())

Paginator的一些操作方法

 1 subclass_s = models.subclass.objects.all()
 2 s = Paginator(subclass_s,10)
 3 
 4 s.count #總物件,即列表裡面的物件總數
5 6 s.num_pages #總頁碼數 7 8 p.page(num) #獲取第num頁 9 10 p.page(num).object_list #獲取第num頁裡面的資料並以列表的形式顯示 11 12 p.page(num).has_next() #判斷num頁當前是否有下一頁 13 14 p.page(num).hhas_previous() #判斷num頁當前是否有上一頁 15 16 p.page(num).has_other_pages() #判斷num頁是否有其他頁 17 18 p.page(num).next_page_number() #獲取下一頁的頁碼 19 20 p.page(num).previous_page_number() #獲取上一頁的頁碼 21 22 p.page(num).start_index() #num頁內從一開始數第一個物件 23 24 p.page(num).end_index() #num頁內從一開始數最後一個物件