分页显示

说明:

分页

 Django 提供了一些类实现管理数据分页,这些类位于 django/core/paginator.py 中

Paginator 对象

 Paginator(列表,int) :返回分页对象,参数为列表数据,每面数据的条数

属性

 count :对象总数

 num_pages :页面总数
page_range :页码列表,从 1 开始,例如 [1, 2, 3, 4]

方法

 page(num) :下标以 1 开始,如果提供的页码不存在,抛出 InvalidPage 异常

异常 exception

 InvalidPage :当向 page()传入一个无效的页码时抛出

 PageNotAnInteger :当向 page()传入一个不是整数的值时抛出

 EmptyPage :当向 page()提供一个有效值,但是那个页面上没有任何对象时抛出

Page 对象

创建对象

 Paginator 对象的 page()方法返回 Page 对象,不需要手动构造

属性

 object_list :当前页上所有对象的列表

 number :当前页的序号,从 1 开始

 paginator :当前 page 对象相关的 Paginator 对象

方法

has_next() :如果有下一页返回 True

 has_previous() :如果有上一页返回 True
has_other_pages() :如果有上一页或下一页返回 True

 next_page_number() :返回下一页的页码,如果下一页不存在,抛出 InvalidPage 异常

 previous_page_number() :返回上一页的页码,如果上一页不存在,抛出 InvalidPage异常

 len() :返回当前页面对象的个数

 迭代页面对象:访问当前页面中的每个对象

示例
1:创建分页视图

def logined_index(request, pindex):
    # return HttpResponse("index")
    articlelist = Article.objects.all()
    p = Paginator(articlelist, 2)  # 按照每页两条进行分页
    if pindex == "":
        pindex = 1
    pindex = int(pindex)
    # 构造page对象
    page = p.page(pindex)
    # 得到页码列表
    plist = p.page_range

    username = request.session.get("username")
    user = User.objects.get(pk=13)
    # print(user.header.url)
    # return render(request, 'pianke/logined_index.html', {'portrait': user.portrait})
    context = {
        "username": username,
        "articlelist": page,
        "portrait": user.portrait,
        # "article": page,
        "plist": plist,
        "request": request,
        "pIndex": pindex,
    }
    return render(request, "pianke/logined_index.html", context)

2:配置url

3:分页展示

  <div class="article">
                {% for item in articlelist %}

                    <div class="detail-intro">
                         <div class="detail-title">
                         <a href="{% url 'pianke:article_detail'%}">{{item.title}}</a>
                         </div>
                        <div class="article-author"><a href="../../pages/user/user.html?uid=1176989" >
                            By&nbsp;/&nbsp;{{item.author.username}}</a></div>
                        <hr style="color: #0f0f0f; width: 100px; margin-left: 20px; margin-top: 20px">
                         <div class="detail-article-intro">
                         {{item.content|truncatechars_html:100 }}
                         </div>

                        <div class="article-others">{{item.visit_num}} k次阅读&nbsp;&nbsp;|&nbsp;&nbsp;评论:{{item.likes}}
                            &nbsp;&nbsp;|&nbsp;&nbsp;喜欢:{{item.likes}} </div>
                    </div>
                {% endfor %}

                {% for pindex in plist %}

                        {% if pIndex == pindex %}

                             {{ pindex }}&nbsp;&nbsp;

                        {% else %}

                             <a href="/pianke/logined_index/{{ pindex }}/">{{ pindex }}</a>&nbsp;&nbsp;

                        {% endif %}
                {% endfor %}
            </div>
          </div>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (以下使用ssm+jsp实现显示所有电影为例子) 1.封装一个PageBean类 package com.enti...
    何文杰啊阅读 3,837评论 0 0
  • 第一步:导入类 下载AjaxPage.class.php 我这里的提供的是之前3.1时候用的,在3.2用的时候需要...
    遺莣_e8f5阅读 5,861评论 0 0
  • 分页功能是django的一个模块,可以直接导入: 主要的方法函数是page,可以通过实例化的paginator.p...
    陆文斌阅读 581评论 0 1
  • #本文参加‘青春’大赛,本人保证本文为本人原创,如有问题则与主办方无关,自愿放弃评优评奖资格 青春啊!就要逝去 未...
    南城晓梦阅读 316评论 0 0