分頁功能代碼:html
1 from django.shortcuts import render 2 3 # Create your views here. 4 5 from app01 import models 6 7 8 9 def books(request): 10 #從URL取參數 11 page_num = request.GET.get("page") 12 print(page_num,type(page_num)) 13 # 每一頁顯示多少條數據 14 per_page = 10 15 # 總數據是多少 16 total_count = models.Book.objects.all().count() 17 # 總共須要多少頁碼來展現 18 total_page, m = divmod(total_count, per_page) 19 if m: 20 total_page += 1 21 try: 22 page_num = int(page_num) 23 # 若是輸入的頁碼數超過了最大的頁碼數,默認返回最後一頁的數據 24 if page_num > total_page: 25 page_num = total_page 26 except Exception as e: 27 #當輸入的頁碼不是正經數字的時候,默認返回第一頁的數據 28 page_num = 1 29 30 31 #定義兩個變量保存數據從哪兒取到哪兒 32 data_start = (page_num-1)*10 33 data_end = page_num*10 34 35 36 37 #頁面總共展現多少頁碼 38 max_page = 11 39 if total_page < max_page: 40 max_page = total_page 41 42 43 half_max_page = max_page // 2 44 #頁面上展現的頁碼從哪兒開始 45 page_start = page_num - half_max_page 46 #頁面上展現的頁碼到哪兒結束 47 page_end = page_num + half_max_page 48 #若是當前頁減一半,比1還小 49 if page_start <= 1: 50 page_start = 1 51 page_end = max_page 52 53 #若是當前頁加一半比總頁碼數還大 54 if page_end >= total_page: 55 page_end = total_page 56 page_start = total_page - max_page +1 57 58 all_book = models.Book.objects.all()[data_start:data_end] 59 60 #本身拼接分頁的HTML代碼 61 html_str_list = [] 62 #加上第一頁 63 html_str_list.append('<li><a href="/books/?page=1">首頁</a></li>') 64 #加上一個上一頁的標籤 65 #判斷,若是是第一頁就沒有上一頁了 66 if page_num <= 1: 67 html_str_list.append(' <li class="disabled"><a href="#" ><span aria-hidden="true">«</span></a><li>') 68 else: 69 #加上一個上一頁的功能 70 html_str_list.append(' <li><a href="/books/?page={}" ><span aria-hidden="true">«</span></a><li>'.format(page_num-1)) 71 72 for i in range(page_start,page_end +1): 73 #若是是當前頁就加一個active樣式類 74 # if i == page_num: 75 # tmp = '<li class="active"><a href="/books/?page={0}">{0}</a></li>'.format(i) 76 # else: 77 if i == page_num: 78 tmp = '<li class="active"><a href="/books/?page={0}">{0}</a></li>'.format(i) 79 else: 80 tmp = '<li><a href="/books/?page={0}">{0}</a></li>'.format(i) 81 82 html_str_list.append(tmp) 83 84 #加上一個下一頁的標籤 85 #判斷,若是是最後一頁,就沒有下一頁 86 if page_num >= total_page: 87 html_str_list.append('<li class="disabled"><a href="#" aria-label="Next"><span aria-hidden="true">»</span></a><li>') 88 else: 89 html_str_list.append('<li><a href="/books/?page={}" aria-label="Next"><span aria-hidden="true">»</span></a><li>'.format(page_num+1)) 90 #加上最後一頁 91 html_str_list.append('<li><a href="/books/?page={0}">末頁</a></li>'.format(total_page)) 92 93 page_html = "".join(html_str_list) 94 95 96 97 return render(request,'books.html',{'books':all_book,"page_html":page_html})