django 分页
Django自帶分頁:
?導入:? ? from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
含有兩個對象可以互相調用:page對象? paginator 對象
對象方法不相同??
paginator 對象方法:
????????????????par_page:? ? ? ? ? ?每頁顯示條目數量
????????????? ? cout:? ? ? ? ? ? ? ? ? 數據總個數
????????? ? ? ? num_pages:? ? ? 總頁數
????????????? ? page_range:? ?總頁數的索引范圍(1,100)
????????????? ? page:? ? ? ? ? ? ? page對象
page對象方法:
?????????has_next? ? ? ? ? ? ? ? ? ?是否有下一頁
? ? ? ? ?next_page_number? 下一頁頁碼
? ? ? ? ?has_previous? ? ? ? ? ? 是否有上一頁
? ? ? ? ?object_list? ? ? ?????? ? ? 分頁之后的數據列表
? ? ? ? ?number? ? ? ? ? ? ????????當number前頁
? ? ? ? ?paginator? ? ? ? ?????????paginator對象
自定顯示頁碼
————————————————————————————————————————————————————
原版分頁parger.html
{% if posts.has_previous %}<a href="index1?p={{ posts.previous_page_number }}">上一頁</a> {% endif %} {% if posts.has_next %} <a href="index1?p={{ posts.next_page_number}}">下一頁</a> {% endif %}{% for i in posts.paginator.pager_num_range %}{% if i == posts.number %}<a href="index1?p={{ i }}" style="font-size: 30px"> {{ i }}</a>{% else %}<a href="index1?p={{ i }}">{{ i }}</a>{% endif %} {% endfor %}<span> {{ posts.number }}</span> <span>/ {{ posts.paginator.num_pages }}</span>HTML文件
{% for row in posts%}<li>{{ row.name }}{{ row.age }}</li> {% endfor %} </ul>{% include 'include/parger.html' %}
自定制分頁顯示
pager.py
# -*- coding:utf-8 -*-class Pagination(object):def __init__(self, totalCount, currentPage,perPageItemNum=10, maxPageNum=7):# 數據總個數self.total_count = totalCount# 當前頁try:v = int(currentPage)if v <= 0:v = 1self.current_page = vexcept Exception as e:self.current_page = 1# 每頁顯示的行數self.per_page_item = perPageItemNum# 每頁最多顯示頁碼數self.max_page_num = maxPageNumdef start(self):return (self.current_page-1) * self.per_page_itemdef end(self):return self.current_page * self.per_page_item@propertydef num_pages(self):# 判斷極值# 總頁數199 每頁顯示a,b = divmod(self.total_count,self.per_page_item)if b == 0:return areturn a+1# 要顯示的頁碼def pager_num_range(self):# 當前頁# self.current_page# 最多顯示的頁碼數量 11# self.per_pager_num# 總頁數# self.num_pagesif self.num_pages < self.max_page_num:return range(1, self.num_pages + 1)# 總頁數特別多 5part = int(self.max_page_num / 2)if self.current_page <= part:return range(1, self.max_page_num + 1)if (self.current_page + part) > self.num_pages:return range(self.num_pages - self.max_page_num + 1, self.num_pages + 1)return range(self.current_page - part, self.current_page + part + 1)# 返回前端頁面的字符串def page_str(self):page_list = []first="<li><a href='/index2.html?p=1'>首頁</a></li>"page_list.append(first)if self.current_page == 1:prev = "<li><a href='#'>上一頁</a></li>"else:prev = "<li><a href='/index2.html?p=%s'>上一頁</a></li>" % (self.current_page - 1,)page_list.append(prev)for i in self.pager_num_range():if i == self.current_page:temp = "<li class='active'><a href='/index2.html?p=%s'>%s</a></li>" % (i, i)else:temp = "<li><a href='/index2.html?p=%s'>%s</a></li>" % (i, i)page_list.append(temp)if self.current_page == self.num_pages:nex = "<li><a href='#'>下一頁</a></li>"else:nex = "<li><a href='/index2.html?p=%s'>下一頁</a></li>" % (self.current_page + 1,)page_list.append(nex)last = "<li><a href='/index2.html?p=%s'>尾頁</a></li>" % (self.num_pages,)page_list.append(last)return "".join(page_list)views.py
def index2(request):# 導入自定義py文件from app01.pager import Pagination# 獲取當前頁current_page = request.GET.get('p')# 創建對象傳入值 199總數page_obj = Pagination(199,current_page)# 切片傳入值data_list = USER_LIST[page_obj.start():page_obj.end()]return render(request,'index2.html',{"data":data_list,'page_obj':page_obj})html 文件
{% for row in data%}<li>{{ row.name }}{{ row.age }}</li> {% endfor %} </ul>{% for i in page_obj.pager_num_range %}<a href="/index2.html?p={{ i }}">{{ i }}</a>{% endfor %}<ul class="pagination pagination-sm">{{ page_obj.page_str|safe }}</ul>總結
- 上一篇: html圆圈倒计时,html5 css3
- 下一篇: 海康工业相机功能模块-参数保存、加载、批