Python--day71--分頁功能

分頁功能代碼: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">&laquo;</span></a><li>')
68     else:
69         #加上一個上一頁的功能
70         html_str_list.append(' <li><a href="/books/?page={}" ><span aria-hidden="true">&laquo;</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">&raquo;</span></a><li>')
88     else:
89         html_str_list.append('<li><a href="/books/?page={}" aria-label="Next"><span aria-hidden="true">&raquo;</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})
相關文章
相關標籤/搜索