django 分页
Django自帶分頁(yè):
?導(dǎo)入:? ? from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
含有兩個(gè)對(duì)象可以互相調(diào)用:page對(duì)象? paginator 對(duì)象
對(duì)象方法不相同??
paginator 對(duì)象方法:
????????????????par_page:? ? ? ? ? ?每頁(yè)顯示條目數(shù)量
????????????? ? cout:? ? ? ? ? ? ? ? ? 數(shù)據(jù)總個(gè)數(shù)
????????? ? ? ? num_pages:? ? ? 總頁(yè)數(shù)
????????????? ? page_range:? ?總頁(yè)數(shù)的索引范圍(1,100)
????????????? ? page:? ? ? ? ? ? ? page對(duì)象
page對(duì)象方法:
?????????has_next? ? ? ? ? ? ? ? ? ?是否有下一頁(yè)
? ? ? ? ?next_page_number? 下一頁(yè)頁(yè)碼
? ? ? ? ?has_previous? ? ? ? ? ? 是否有上一頁(yè)
? ? ? ? ?object_list? ? ? ?????? ? ? 分頁(yè)之后的數(shù)據(jù)列表
? ? ? ? ?number? ? ? ? ? ? ????????當(dāng)number前頁(yè)
? ? ? ? ?paginator? ? ? ? ?????????paginator對(duì)象
自定顯示頁(yè)碼
————————————————————————————————————————————————————
原版分頁(yè)parger.html
{% if posts.has_previous %}<a href="index1?p={{ posts.previous_page_number }}">上一頁(yè)</a> {% endif %} {% if posts.has_next %} <a href="index1?p={{ posts.next_page_number}}">下一頁(yè)</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' %}
自定制分頁(yè)顯示
pager.py
# -*- coding:utf-8 -*-class Pagination(object):def __init__(self, totalCount, currentPage,perPageItemNum=10, maxPageNum=7):# 數(shù)據(jù)總個(gè)數(shù)self.total_count = totalCount# 當(dāng)前頁(yè)try:v = int(currentPage)if v <= 0:v = 1self.current_page = vexcept Exception as e:self.current_page = 1# 每頁(yè)顯示的行數(shù)self.per_page_item = perPageItemNum# 每頁(yè)最多顯示頁(yè)碼數(shù)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):# 判斷極值# 總頁(yè)數(shù)199 每頁(yè)顯示a,b = divmod(self.total_count,self.per_page_item)if b == 0:return areturn a+1# 要顯示的頁(yè)碼def pager_num_range(self):# 當(dāng)前頁(yè)# self.current_page# 最多顯示的頁(yè)碼數(shù)量 11# self.per_pager_num# 總頁(yè)數(shù)# self.num_pagesif self.num_pages < self.max_page_num:return range(1, self.num_pages + 1)# 總頁(yè)數(shù)特別多 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)# 返回前端頁(yè)面的字符串def page_str(self):page_list = []first="<li><a href='/index2.html?p=1'>首頁(yè)</a></li>"page_list.append(first)if self.current_page == 1:prev = "<li><a href='#'>上一頁(yè)</a></li>"else:prev = "<li><a href='/index2.html?p=%s'>上一頁(yè)</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='#'>下一頁(yè)</a></li>"else:nex = "<li><a href='/index2.html?p=%s'>下一頁(yè)</a></li>" % (self.current_page + 1,)page_list.append(nex)last = "<li><a href='/index2.html?p=%s'>尾頁(yè)</a></li>" % (self.num_pages,)page_list.append(last)return "".join(page_list)views.py
def index2(request):# 導(dǎo)入自定義py文件from app01.pager import Pagination# 獲取當(dāng)前頁(yè)current_page = request.GET.get('p')# 創(chuàng)建對(duì)象傳入值 199總數(shù)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>總結(jié)
- 上一篇: html圆圈倒计时,html5 css3
- 下一篇: 海康工业相机功能模块-参数保存、加载、批