66.Python-web框架-Django-免费模板django-datta-able的分页的一种方式

目录

1.方案介绍

1.1实现效果

1.2django.core.paginator

Paginator 类:

Page 类:

EmptyPage 和 PageNotAnInteger 异常:

1.3 templatetags

2.方案步骤

2.1创建一个common app

2.2创建plugins/_pagination.html

2.3 其他app的views.py查询方法

2.4在AIRecords.html里使用分页


1.方案介绍

1.1实现效果

实现方案中使用到:

1.2django.core.paginator

        django.core.paginator 是 Django 框架中的一个模块,用于实现数据分页功能。这个模块提供了几个关键类和方法,帮助开发者轻松地在视图中对查询结果进行分页处理,从而在前端展示时能够更加高效和用户友好。下面是 django.core.paginator 中主要组件的简介:

  • Paginator 类:

用途: 主要用于将查询结果集分割成多页。
参数:
object_list: 需要分页的对象列表,通常是数据库查询的结果。
per_page: 每页显示的对象数量,默认为10。
方法:
.count: 返回总对象数。
.num_pages: 返回总页数。
.page(number): 返回指定页号的 Page 对象。
.page_range: 返回一个表示所有页号的范围对象。

  • Page 类:

        用途: 表示分页后的单页数据,包含当前页的数据列表和一些分页信息。
        属性:
                number: 当前页的页码。
                object_list: 当前页的数据列表。
                has_next: 是否有下一页。
                has_previous: 是否有上一页。
                next_page_number: 下一页的页码,如果没有则为None。
                previous_page_number: 上一页的页码,如果没有则为None。
        方法:
                .start_index(): 返回当前页第一条记录的索引位置(从1开始)。
                .end_index(): 返回当前页最后一条记录的索引位置(从1开始)。

  • EmptyPage 和 PageNotAnInteger 异常:

        当请求的页码无效时,如请求的页码不是一个整数或超过了实际的页数,Paginator 在调用 .page() 方法时会抛出这些异常。

1.3 templatetags

         在Django中,templatetags 是一个特殊的目录,位于应用的目录下,用于存放自定义的模板标签和过滤器。通过自定义模板标签和过滤器,开发者可以扩展Django模板系统的功能,使其更加灵活和强大。

2.方案步骤

2.1创建一个common app

考虑到分页是一个通用的功能,所以创建了一个common app。

在此common app下创建文件夹 templatetags

在templatetags下创建general_tags.py

代码如下:

from django import template

register = template.Library()

@register.inclusion_tag('plugins/_pagination.html', takes_context=True)
def show_pagination(context):
    print(context)
    return {
        'page_objects':context.dicts[3]['aiRecords'],
        'search':'',
        'orderby':'',}
  • 'page_objects':context.dicts[3]['aiRecords'],//这句冒号后面的部分,需要根据查询数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坐忘3GQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值