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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |