加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Django Paginator自带分页

发布时间:2020-12-15 17:13:33 所属栏目:大数据 来源:网络整理
导读:对象分为Paginator和Page Paginator方法: per_page? ? ? ? ?每页显示数量 count? ? ? ? ? ?数据总个数 num_pages? ? ? ? 总页数 page_range? ? ? ? 总页数的索引范围 page? ? ? ? ? ? page对象 Page方法: has_next? ? ? ? ? ? ?是否有下一页 next_page_numbe

对象分为Paginator和Page

Paginator方法:

per_page? ? ? ? ?每页显示数量

count? ? ? ? ? ?数据总个数

num_pages? ? ? ? 总页数

page_range? ? ? ? 总页数的索引范围

page? ? ? ? ? ? page对象

Page方法:

has_next? ? ? ? ? ? ?是否有下一页

next_page_number? ? ? 下一页页面

has_previous? ? ? ? ? 是否有上一页

previous_page_number? ? ?上一页页面

objcet_list? ? ? ? ?分页之后的数据列表

number? ? ? ? ? ? ? 当前页

paginator? ? ? ? ? ? paginator对象

from?django.core.paginator?import?Paginator,?EmptyPage,?PageNotAnInteger
L?=?[]for?i?in?range(999):
????L.append(i)
def?index(request):
????current_page?=?request.GET.get('p')
????paginator?=?CustomPaginator(current_page,?11,?L,?10)????
????#?per_page:?每页显示条目数量
????#?count:????数据总个数
????#?num_pages:总页数
????#?page_range:总页数的索引范围,如:?(1,10),(1,200)
????#?page:?????page对象
????try:
????????posts?=?paginator.page(current_page)????????
????????#?has_next??????????????是否有下一页
????????#?next_page_number??????下一页页码
????????#?has_previous??????????是否有上一页
????????#?previous_page_number??上一页页码
????????#?object_list???????????分页之后的数据列表
????????#?number????????????????当前页
????????#?paginator?????????????paginator对象
????except?PageNotAnInteger:
????????posts?=?paginator.page(1)????except?EmptyPage:
????????posts?=?paginator.page(paginator.num_pages)????
????return?render(request,?'index.html',?{'posts':?posts})

Django自带分页添加显示指定页数功能:

NewPaginator函数:

class?NewPaginator(Paginator):
????def?__init__(self,?current_page,?per_pager_num,?*args,?**kwargs):
????????#?当前页
????????self.current_page?=?int(current_page)
????????#?最多显示的页面数量
????????self.per_pager_num?=?int(per_pager_num)
????????super(NewPaginator,?self).__init__(*args,?**kwargs)
????def?pager_num_range(self):
????????#?如果总页数小于显示页面数量
????????if?self.num_pages?<?self.per_pager_num:
????????????return?range(1,?self.num_pages?+?1)
????????#?如过总页数大于显示页数
????????part?=?self.per_pager_num?//?2
????????if?self.current_page?<=?part:
????????????return?range(1,?self.per_pager_num?+?1)
????????#?如果显示页面==总页数
????????if?(self.current_page?+?part)?>?self.num_pages:
????????????return?range(self.num_pages?-?self.per_pager_num+1,?self.num_pages?+?1)
????????return?range(self.current_page?-?part,?self.current_page?+?part?+?1)
????????
L?=?[]
for?i?in?range(999):
????L.append(i)
def?index(request):
????current_page?=?request.GET.get('p')
????paginator?=?NewPaginator(current_page,?10)????#?per_page:?每页显示条目数量
????try:
????????posts?=?paginator.page(current_page)????????
????except?PageNotAnInteger:
????????posts?=?paginator.page(1)????except?EmptyPage:
????????posts?=?paginator.page(paginator.num_pages)????
????return?render(request,?{'posts':?posts})

html页面

<!DOCTYPE?html>
<html>
<head>
????<meta?charset="UTF-8">
????<title></title>
</head>
<body>
<ul>
????{%?for?item?in?posts?%}
????????<li>{{?item?}}</li>
????{%?endfor?%}
</ul>
<div>
<span>
{%?if?posts.has_previous?%}
????<a?href="?p={{?posts.previous_page_number?}}">Previous</a>
{%?endif?%}
????{%?for?i?in?posts.paginator.page_num_range?%}
????????<a?href="?p={{?i?}}">{{?i?}}</a>
????{%?endfor?%}
????{%?if?posts.has_next?%}
????????<a?href="?p={{?posts.next_page_number?}}">Next</a>
????{%?endif?%}
</span>
<span>
Page?{{?posts.number?}}?of?{{?posts.paginator.num_pages?}}.
</span>
</div>
</body>
</html>


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读