• Django-分页器


    一、分页器介绍

    python3 manage.py shell   #进入shell模式下
    from django.core.paginator import Paginator  #导入包
    from loginApp.models import Guest  #导入对象
    guest_list = Guest.objects.all()  #获取到所有的guest对象
    p=Paginator(guest_list,2)   #创建每页 2 条数据的分页器
    p.count # 查看共多少条数据
    p.page_range  #查看共分多少页(每页 2 条数据)循环结果为 1,2,3(共 3 页)
    page1 = p.page(1)   # 获取第 1 页的数据
    page1.object_list # 当前页的对象
    page1 = p.page(1)
    for p in page1: # 循环打印第 1 页嘉宾的 realname
        p
    ##########第三页############# 
    >>> page3 = p.page(3) # 获取第 3 页的数据 
    >>> page3.has_next() # 是否有下一页 False 
    >>> page3.has_previous() # 是否有上一页 True 
    >>> page3.has_other_pages() # 是否有其它页 True 
    >>> page3.previous_page_number() # 前一页是第几页 
    
    >>> page2.next_page_number() # 下一页是第几页
    >>> page2.previous_page_number() # 上一页是第几页
    page2.has_next() # 是否有下一页
    page2.has_previous() # 是否有上一页
    page2.end_index() # 本页的最后一条数据
    page2.start_index() # 本页的第一条数据
    

    二、分页器代码实现

    1、修改views.py

    @login_required()
    def guest_manage(request):
        username = request.session.get('user', '')
        guest_list = Guest.objects.all()
        paginator = Paginator(guest_list,2)  #创建每页2条的分页器
        page = request.GET.get("page")  #从页面获取page数据
        '''
            获取第 page 页的数据。如果当前没有页数,抛 PageNotAnInteger 异常,返回第一页的数据。如果超出最 大页数的范围,抛 EmptyPage 异常,返回最后一页面的数据。
        '''
        try:
            contents = paginator.page(page)
        except PageNotAnInteger:
            contents = paginator.page(1)
        except EmptyPage:
            contents = paginator.page(paginator.num_pages)
        return render(request,'guest_manage.html',{'user':username,'guests':contents})
    

    2、修改guest_manage.html

    		<!-- 嘉宾列表 -->
    		...........................
    		<!-- 列表分页器 -->
    		<div class="pagination">
    			<span class="step-links">
    				{% if guests.has_previous %}
    				<a href="?page={{ guests.previous_page_number }}">
    					previous
    				</a>
    				{% endif %}
    				<span class="current">
    					Page {{ guests.number }} of {{ guests.paginator.num_pages }}.
    				</span>
    				{% if guests.has_next %}
    				<a href="?page={{ guests.next_page_number }}">
    					next
    				</a>
    				{% endif %}
    			</span>
    		</div>
    	</body>
    

    3、重新访问http://127.0.0.1:8000/event_manage,点击嘉宾按钮可以看到:

    本章代码:https://github.com/Oneperson1128/DjangoDemo.git   参考loginDemo6文件夹

    你要相信 一切都会好起来
  • 相关阅读:
    制作OSGB数据索引
    汤臣一品
    Python 库/模块的安装、查看
    ezdxf包下autocad的开发
    python3.7安装pylint
    航拍全景图补天
    电脑百科
    使用Excel批量提取文件名
    利用爬虫实现网上的图片自动下载
    MarkDown&思维导图
  • 原文地址:https://www.cnblogs.com/feifei-cyj/p/14417701.html
Copyright © 2020-2023  润新知