Django分页显示

Django自身提供了一些类来实现管理分页,数据被分在不同的页面中,并带有“上一页/下一页”标签。这个类叫做Pagination,其定义位于 django/core/paginator.py 中。

实例:简单分页

  1. views
def index(request):
    users = User.objects.all()
    pindex = request.GET.get("pindex")
    #分页
    pageinator = Paginator(users, 2)
    if pindex=="" or pindex==None:
         pindex = 1
    page = pageinator.page(pindex)
    return render(request,'page_demo/index.html',{'page':page})
  1. templates
遍历:
{% for emp in page.object_list %}
{% endfor %}

分页:
{% if page.has_previous %}
    <a href="/emp/empList/?pindex={{ page.previous_page_number }}">&lt;上一页</a>
{% endif %}
{% for pindex in page.paginator.page_range %}
    {% if pindex == page.number %}
        {{ pindex }}
    {% else %}
        <a href="/emp/empList/?pindex={{ pindex }}">{{ pindex }}</a>
    {% endif %}
{% endfor %}
{% if page.has_next %}
    <a href="/emp/empList/?pindex={{ page.next_page_number }}">&gt;下一页</a>
{% endif %}
  1. 配置urls映射,完成分页

知识点:

  1. pagtor = Paginator(User.objects.all(),per_page=3) # 构造分页器对象
  2. Paginator.count:所有页面对象总数,即统计object_list中item数目。
  3. Pagnator.num_pages:页面总数。
  4. pagiator.page_range:页面范围,从1开始,例如[1,2,3,4]
  5. page = Paginator(User.objects.all(),per_page=3).page(1) # 获取第一页
  6. Page.has_next () 如果有下一页,则返回 True
  7. Page.has_previous () 如果有上一页,返回 True
  8. Page.has_other_pages () 如果有上一页或下一页,返回 True
  9. Page.next_page_number () 返回下一页的页码。如果下一页不存在,抛出 InvlidPage 异常
  10. Page.previous_page_number () 返回上一页的页码。如果上一页不存在,抛出InvalidPage异常
  11. Page.start_index () 返回当前页上的第一个对象,相对于分页列表的所有对象的序号,从1开始。比如,将
    五个对象的列表分为每页两个对象,第二页的 start_index() 会返回 3
  12. Page.end_index () 返回当前页上的最后一个对象,相对于分页列表的所有对象的序号,从1开始。 比如,
    将五个对象的列表分为每页两个对象,第二页的 end_index() 会返回 4
  13. Page.object_list 当前页上所有对象的列表
  14. Page.number 当前页的序号,从1开始
  15. Page.paginator 相关的 Paginator 对象
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Django 中已经写好了分页实现的逻辑,我们在做分页的时候,仅需要通过俩个对象Paginator 和 Page ...
    鸟它鸟阅读 341评论 0赞 0
  • 我们先在 shell 中演示分页器的用法: 分页器示例 现在我们在 view 中使用分页器: 浏览器打开:http...
    SingleDiego阅读 1,711评论 2赞 3
  • 方法一:使用pure_pagination进行分页 1. pure_pagination介绍 pure_pagin...
    Jlan阅读 1,235评论 0赞 7
  • 当页面因需要展示的数据条目过多,导致无法在一个页面全部显示。这时,页面经常会采用分页形式进行展示,然后每页显示 2...
    猴哥爱读书阅读 33,871评论 4赞 20
  • 一、Django框架前言知识: 1、C/S和B/S的区别: C/S结构软件:客户端/服务端软件,即客户端要自己下载...
    月下独酌123阅读 5,292评论 0赞 36

友情链接更多精彩内容