分页

分页

分页库Paginator的基本语法

django提供了分页的工具,存在于django.core中

Paginator: 数据分页工具
Page:具体的某一页

Paginator:

对象创建: Paginator(数据集,每一页数据)

属性:

count  计算和

num_pages: 页面总和

page_range: 页码列表,从1开始

方法:

page(页码):获取的一个page对象,页码不存在则抛出invalidPage的异常

常见错误

invalidPage:page()传递无效页码

PageNotAnInteger:Page()传递的不是整数

Empty:page()传递的值有效,但是没有数据

page对象

page:

对象获取,通过Paginator的page()方法获得

属性:

object_list: 当前页面上所有的数据对象
number: 当前页的页码值
paginator: 当前page关联的Paginator对象

方法:

has_next()   判断是否有下一页
has_previous():  判断是否有上一页
has_other_pages():  判断是否有上一页或下一页
next_page_number();  返回下一页的页码
previous_page_number(): 返回上一页的页码
len(): 返回当前也的数据的个数

Paginator对象和Page对象的关系

如下有学生表,学生表中有25条数据,通过分页,每一个6条数据,去实现分页的功能

Paginator对象和Page对象的关系

实例

视图函数中的使用

from django.core.paginator import Paginator

def users(request):
    if request.method == 'GET':
        # 使用切片完成分页功能
        # sql:offset limit,select * from users offset 3 limit 3
        page_number = int(request.GET.get('page', 1))
        # users = Users.objects.all()[3 * (page_number - 1):3 * page_number]
        users = Users.objects.all()
        # 使用Paginator分页
        paginator = Paginator(users, 3)
        # 获取某一页的信息
        page = paginator.page(page_number)

        return render(request, 'users.html', {'page': page})

模板中的使用使用


{% extends 'base.html' %}

{% block title %}
    用户管理界面
{% endblock %}

{% block content %}
    <P>已有账号</P>
    <table>
        <thead>
            <th>id</th>
            <th>用户名</th>
            <th>创建时间</th>
        </thead>
        <tbody>
            {% for u in page %}
                <tr>
                    <td>{{ u.id }}</td>
                    <td>{{ u.username }}</td>
                    <td>{{ u.create_time | date:'Y-m-d' }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
<p>当前页:{{ page.number }}</p>
<p>页码:
    {% for i in page.paginator.page_range %}
        <a href="{% url 'users:users' %}?page={{i}}">{{i}}</a>
    {% endfor %}
</p>
<p>
    {% if page.has_previous %}
    <a href="{% url 'users:users' %}?page={{ page.previous_page_number}}">上一页</a>
    {% endif %}
    {% if page.has_next %}
    <a href="{% url 'users:users' %}?page={{ page.next_page_number}}">下一页</a>
    {% endif %}
</p>

{% endblock %}
分页.gif
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 当页面因需要展示的数据条目过多,导致无法在一个页面全部显示。这时,页面经常会采用分页形式进行展示,然后每页显示 2...
    猴哥爱读书阅读 33,854评论 4 20
  • 分页 REST framework 包含对可定制分页样式的支持。这使你可以将较大的结果集分成单独的数据页面。分页 ...
    入间阅读 1,415评论 0 2
  • 方法一:使用pure_pagination进行分页 1. pure_pagination介绍 pure_pagin...
    Jlan阅读 1,230评论 0 7
  • Django 中已经写好了分页实现的逻辑,我们在做分页的时候,仅需要通过俩个对象Paginator 和 Page ...
    鸟它鸟阅读 337评论 0 0
  • 排序、过滤、分页、分组 Contoso 大学示例 Web 应用程序演示如何使用实体框架(EF)Core 2.0 和...
    程序员长春阅读 2,298评论 0 5

友情链接更多精彩内容