Django-分页扩展
生活随笔
收集整理的這篇文章主要介紹了
Django-分页扩展
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
django提供了分頁函數(shù),但是功能較少,因此我對其進行了擴展
views.py
1 from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger 2 USER_LIST = [] 3 for i in range(1,999): 4 temp = {'name':'root'+str(i),'age':i} 5 USER_LIST.append(temp) 6 #自定制的繼承于Paginator的類,增加了顯示頁碼功能 7 class CustomPaginator(Paginator): 8 def __init__(self,current_page, per_pager_num,*args,**kwargs): 9 # 當前頁 10 self.current_page = int(current_page) 11 # 最多顯示的頁碼數(shù)量 11 12 self.per_pager_num = int(per_pager_num) 13 super(CustomPaginator,self).__init__(*args,**kwargs) 14 def pager_num_range(self): 15 # 當前頁 16 #self.current_page 17 # 最多顯示的頁碼數(shù)量 11 18 #self.per_pager_num 19 # 總頁數(shù) 20 # self.num_pages 21 if self.num_pages < self.per_pager_num: 22 return range(1,self.num_pages+1) 23 # 總頁數(shù)特別多 5 24 part = int(self.per_pager_num/2) 25 if self.current_page <= part: 26 return range(1,self.per_pager_num+1) 27 if (self.current_page + part) > self.num_pages: 28 return range(self.num_pages-self.per_pager_num+1,self.num_pages+1) 29 return range(self.current_page-part,self.current_page+part+1) 30 31 def FenYe(request): 32 33 current_page = request.GET.get('p') 34 # Paginator對象 35 paginator = CustomPaginator(current_page,11,USER_LIST,10)#調(diào)用自定義類參數(shù)為(當前頁碼,顯示的頁碼數(shù),總的數(shù)據(jù),每頁顯示的數(shù)據(jù)條數(shù)) 36 try: 37 # Page對象 38 posts = paginator.page(current_page) 39 40 except PageNotAnInteger: 41 posts = paginator.page(1) 42 except EmptyPage: 43 posts = paginator.page(paginator.num_pages) 44 45 return render(request, 'fenye.html', {'posts': posts})?
fenye.html:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>fenye1</title> 6 </head> 7 <body> 8 {% for item in posts %} 9 <li>{{ item.name }}--{{ item.age }}</li> 10 {% endfor %} 11 {% include 'include/pager.html' %} 12 13 </body> 14 </html>pager.html
1 {% if posts.has_previous %} 2 <a href="/fenye1?p={{ posts.previous_page_number }}">上一頁</a> 3 {% else %} 4 <a href="#">上一頁</a> 5 {% endif %} 6 {% for i in posts.paginator.pager_num_range %} 7 {% if i == posts.number %} 8 <a style="font-size: 30px;" href="/fenye1?p={{ i }}">{{ i }}</a> 9 {% else %} 10 <a href="/fenye1?p={{ i }}">{{ i }}</a> 11 {% endif %} 12 {% endfor %} 13 14 {% if posts.has_next %} 15 <a href="/fenye1?p={{ posts.next_page_number }}">下一頁</a> 16 {% endif %} 17 <span> 18 {{ posts.number }}/{{ posts.paginator.num_pages }} 19 </span>?
Paginator對象
全部數(shù)據(jù):USER_LIST,=》得出共有多少條數(shù)據(jù)
per_page: 每頁顯示條目數(shù)量
count: 數(shù)據(jù)總個數(shù)
num_pages:總頁數(shù)
page_range:總頁數(shù)的索引范圍,如: (1,10),(1,200)
page: page對象(是否具有下一頁;是否有上一頁;)
Page對象
# has_next 是否有下一頁# next_page_number 下一頁頁碼
# has_previous 是否有上一頁
# previous_page_number 上一頁頁碼
# object_list 分頁之后的數(shù)據(jù)列表,已經(jīng)切片好的數(shù)據(jù)
# number 當前頁
# paginator paginator對象
轉(zhuǎn)載于:https://www.cnblogs.com/GodLv/p/9574394.html
總結(jié)
以上是生活随笔為你收集整理的Django-分页扩展的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: The Linux Command Li
- 下一篇: Windows XP Embedded