分页器基本操作

用户访问一个网页或者查看某些数据,如果数据量过大肯定需要按页查看,不可能一个页面显示N条数据内容这里就用到了分页器

 

  • 首先往数据库里插入数据,这里咱们进行脚本批量插入
    # #脚本批量插入数据
    book_list = []
    for i in range(200):
        #创建200条数据
        book = Book(title='book_%s'%i,price=i*i)
        book_list.append(book)
    #批量插入语法
    Book.objects.bulk_create(book_list)

这样一条insert语句包含多条数据,一次性插入

 

  • 分页器的基本语法及使用
def index(request):

    #分页器对使用

    book_list = Book.objects.all()

    paginator = Paginator(book_list,10) #多少数据分一页

    print('coumt:',paginator.count) #数据总数

    print('num_pages:',paginator.num_pages) #总页数

    print('page_range:',paginator.page_range) #页码列表

    #获取某页的方式

    #方式一
    page1=paginator.page(1) #获取第一页的page对象

    #方式二

    for i in page1: #遍历第一页的所有数据
        print(i)

    #根据用户选择来进行页面显示,获取用户的页数
    try: #这里捕获异常到目的就是为了用户选择页码以外到值不会报错
        current_page=int(request.GET.get('page',1)) #这里要记得传一个默认值否则会报错,因为views 没有获取到page这个参数
        current_page=paginator.page(current_page)
    except EmptyPage as e:
        current_page =paginator.page(1)


    return render(request,'index.html',locals())

#输出内容

coumt: 200
num_pages: 20
page_range: range(1, 21)
Book object (1)
Book object (2)
Book object (3)
Book object (4)
Book object (5)
Book object (6)
Book object (7)
Book object (8)
Book object (9)
Book object (10)

 

  • 前端页面的显示,传递分页过后的对象
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>分页器</title>
</head>
<body>
<ul>
{#这里传递分页过后到内容#}
    {% for book in current_page %}
        <li>{{ book.title }} : {{ book.price  }}</li>
    {% endfor %}

</ul>

</body>
</html>
  • 效果图

因为默认访问显示的为第一页内容,如是果想访问其他页需要 给后端传递 page 参数

更换页码 URL

 

版权声明:本文为mjiu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/mjiu/p/10093867.html