目录
EmptyPage 和 PageNotAnInteger 异常:
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'],//这句冒号后面的部分,需要根据查询数据