Django 使用Paginator分頁
阿新 • • 發佈:2018-12-17
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頁內從一開始數最後一個物件