• 13-分页


    分页

      Django提供了数据分页的类,类被定义在django.core.paginator中,对象Paginator是用来进行分页处理的,可以把一组数据按照每页多少条进行分割,对象Page用于表示第m页的数据。除了django的类定义分页,还可以利用bootstrap里面的分页样式,去官网复制改动也可以实现分页的样式。

    视图函数里的代码:def page():

    def page(request, index):
      # 查询省份信息: 没有父级的就是省份
      shenglist = AreaInfo.objects.filter(parent__isnull=True)
      # 创建Paginator对象: 对shenglist分页,每页10条数据
      paginator = Paginator(shenglist, 10)
    
      # 当'page'后没有数字时,默认查询第1页数据
      if index == '':
          index = '1'
    
      # 创建Page对象: 默认先取第1页整数,内部有10条省份信息
      page = paginator.page(int(index))
      # 构造上下文
      context = {'page':page}
    
      return render(request, 'Book/page.html', context)

    模板代码:

    分页展示信息,每页10条信息,展示对应的本页信息时,本页索引不要超链接,输入page或者page1都是第一页。上一页,下一页就用过滤器加正数、负数。

    {#上一页 过滤器的方法 加一个数#}
    {% if page.has_previous %}
        <a href="/page{{ page.number|add:-1 }}/">上一页</a>
    {% endif %}
    
    {#遍历出当前页中的10条省份信息#}
    <ul>
        {% for sheng in page %}
            <li>{{ sheng.name }}</li>
        {% endfor %}
    </ul>
    
    {#底部分页码   迭代循环全部页数    返回页码列表,从1开始,例如[1, 2, 3, 4]#}
    {% for index in page.paginator.page_range %}
    
        {# 如果展示的是当前页就不需要超链接  page.number返回当前是第几页 #}
        {% if page.number == index %}
            {{ index }}
        {% else %}
            <a href="/page{{ index }}/">{{ index }}</a>
        {% endif %}
    
    {% endfor %}
    
    {#下一页, 如果有下一页返回True   过滤器的方法,加数字#}
    {% if page.has_next %}
        <a href="/page{{ page.number|add:1 }}/">下一页</a>
    {% endif %}

    Paginator对象

    • 方法page(m):返回Page对象,表示第m页的数据条,下标以1开始
    • 属性page_range:返回页码列表,从1开始,例如[1, 2, 3, 4]
    • 属性count:返回对象总数
    • 属性num_pages:返回页面总数

    Page对象

    • 调用Paginator对象的page()方法返回Page对象,不需要手动构造
    • 属性number:返回当前是第几页,从1开始
    • 属性paginator:当前页对应的Paginator对象
    • 方法has_next():如果有下一页返回True
    • 方法has_previous():如果有上一页返回True
    • 属性object_list:返回当前页对象的列表
    • 方法len():返回当前页面对象的个数
  • 相关阅读:
    使用C++为对象分配与释放内存时的几个好习惯
    OGRE渲染流程
    【问题解决记录】无法识别的标志“-sdlMode”,在“p2”中
    四元数 Quaternion
    《The Cg Tutorial》阅读笔记——凹凸贴图 Bump Mapping
    尝试优化骨骼动画计算的意外收获——使用嵌入式汇编对float转int进行优化
    Model 的 Meta 选项
    dns资料
    ansible中的变量
    DockerFile与docker-compose.yml是什么
  • 原文地址:https://www.cnblogs.com/lishuntao/p/11722931.html
Copyright © 2020-2023  润新知