美文网首页
使用Django的分页插件进行分页

使用Django的分页插件进行分页

作者: EverglowLyu | 来源:发表于2021-01-04 15:26 被阅读0次
page.jpg

1 Paginator
Paginator 类的作用是将我们需要分页的数据分割成若干份。当我们实现化一个 Paginator 类的实例时,需要给 Paginator 传入两个参数。第一个参数是数据源,可以是一个列表、元组、以及查询结果集 QuerySet。第二个参数需要传入一个整数,表示每页显示数据条数。

另外 Paginator 类中有三个常用的属性,它们分别是:

count:表示所有页面的对象总数。
num_pages: 表示页面总数。
page_range: 下标从 1 开始的页数范围迭代器。
2 Page 对象
Paginator 类提供一个** page(number) **函数,该函数返回就是一个 Page 对象。参数 number 表示第几个分页。如果 number = 1,那么 page() 返回的对象是第一分页的 Page 对象。在前端页面中显示数据,我们主要的操作都是基于 Page 对象。

Page 对象有三个常用的属性:
object_list: 表示当前页面上所有对象的列表。
numberv: 表示当前页的序号,从 1 开始计数。
paginator: 当前 Page 对象所属的 Paginator 对象。

除此之外,Page 对象还拥有几个常用的函数:
has_next(): 判断是否还有下一页,有的话返回True。
has_previous():判断是否还有上一页,有的话返回 True。
has_other_pages():判断是否上一页或下一页,有的话返回True。
next_page_number(): 返回下一页的页码。如果下一页不存在,抛出InvalidPage 异常。
previous_page_number():返回上一页的页码。如果上一页不存在,抛出InvalidPage 异常。

from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from django.http import HttpResponse
from django.shortcuts import render
from .models import *


def show_view(request):
    # 获取当前页码数
    num = request.GET.get('num', 1)
    n = int(num)
    # 1.查询stu_student表中的所有数据
    stus = Student.objects.all()  # 获取所有的
    # django 分页
    pager = Paginator(stus, 2)
    # 获取当前页面的数据
    try:
        perpage_data = pager.page(n)
        # 返回第一页的数据
    except PageNotAnInteger:
        perpage_data = pager.page(1)
        # 返回最后一页的数据
    except EmptyPage:
        perpage_data = pager.page(pager.num_pages)
    return render(request, 'show.html', {'show': stus, 'pager': pager, 'perpage_data': perpage_data})
    <div class="container">
        <h4 class="mb-12">全部学生</h4>
        <table class="table table-sm">
            <thead>
            <tr>
                <th scope="col">编号</th>
                <th scope="col">姓名</th>
                <th scope="col">密码</th>
            </tr>
            </thead>
            <tbody>
            {% for stu in perpage_data %}
                <tr>
                    <th scope="row">{{ stu.id }}</th>
                    <td>{{ stu.username }}</td>
                    <td>{{ stu.password }}</td>
                </tr>
            {% endfor %}
            </tbody>
        </table>
        <nav aria-label="Page navigation example">
            <ul class="pagination justify-content-center">
                {% if perpage_data.has_previous %}
                    <li class="page-item">
                        <a class="page-link" href="/show/?num={{ perpage_data.previous_page_number }}">上一页</a>
                    </li>
                {% endif %}
                {% for n in pager.page_range %}
                    {% if n < 5 %}
                        <li class="page-item"><a class="page-link" href="/show/?num={{ n }}">{{ n }}</a></li>
                    {% endif %}
                {% endfor %}
                {% if perpage_data.has_next %}
                    <li class="page-item">
                        <a class="page-link" href="/show/?num={{ perpage_data.next_page_number }}">下一页</a>
                    </li>
                {% endif %}
            </ul>
        </nav>
    </div>

相关文章

  • 使用Django的分页插件进行分页

    1 PaginatorPaginator 类的作用是将我们需要分页的数据分割成若干份。当我们实现化一个 Pagin...

  • MyBatis之分页

    五、分页 目录:使用Limit分页、RowBounds分页、分页插件 1.使用Limit分页 语法: 使用MyBa...

  • django 使用原生sql及分页

    python3 django 使用原生sql及分页 django 使用原生sql及分页,类似于django res...

  • 第20天,分页器

    本篇写了使用Django自有的分页器paginator的用法和自定制分页器 1.1 Django之分页功能 Dj...

  • MyBatisPlus(二)

    查询操作 分页查询 分页在网站使用的十分之多!1、原始的 limit 进行分页2、pageHelper 第三方插件...

  • MyBatis中简化分页(PageHelper)

    1、内存分页(使用RowBounds对象进行分页)     Mybatis使用RowBounds对象进行分页,它是...

  • Django插件pagination实现页面分页功能

    1.dj-pagination 这是一个专门分页的Django插件,可以快速的实现数据分页。官方文档[http:/...

  • 封装分页插件

    分页插件开发 1、分页插件的使用 2、分页插件的参数通常以表格的形式: 参数参数表示的意义data(必须写) 页面...

  • Mybatis Plus 分页插件

    1. 在config文件里面新增分页插件 2. 在代码里使用分页插件

  • MybatisPlus实现分页

    常见的分页方式 1,原始的limit分页 2,使用pageHelper第三方插件分页 3,使用MabatisPlu...

网友评论

      本文标题:使用Django的分页插件进行分页

      本文链接:https://www.haomeiwen.com/subject/ffjvoktx.html