对于Django提供的数据分页的技术,Paginator类用于对列进行一页n条数据的分页运算,也就是分多少页,Page类用于表示第m页的数据,也就是一页显示多少数据
Paginator类常用对象属性
num_pages | 返回分页后总页数 |
---|---|
page_range | 返回分页后页码的列表,返回值类型为列表 |
count | 返回对象总数 |
init(data,number) | 返回分页对象,data为列表数据,number为每页数据的条数 |
page(number) | 返回第number页的Page类实例对象 |
对于Page类,可通过调用Paginator对象的page()方法来返回Page对象
number | 返回当前是第几页,从1开始 |
---|---|
object_list | 返回当前页对象的列表 |
paginator | 当前页对应的Paginator |
previous_page_number | 返回前一页的页码 |
next_page_number | 返回下一页的页码 |
has_next | 如果有下一页则返回True |
has_previous | 如果有上一页则返回True |
len() | 返回当前页面对象的个数 |
视图函数:
先获取数据库图书表的所有满足过滤器条件的数据内容,在通过Page类和Paginator类的属性方法获得页数和每一页的数据,在渲染到页面上
def show_books(request,pageIdx):
# 查询出所有满足条件的数据
bookslist= BookInfo.objects.filter(is_delete=0)
# print(bookslist)
# 整理当前页码
paginator = Paginator(bookslist,3)
if pageIdx == "":
pageIdx = 1
pageIdx=