从数据库读出数据分页显示

#从数据库中把数据读出来  再渲染到页面上
def book_view(request):
    #book_list=Book.objects.all()
    # return render(request, "book_view.html",{"book_list":book_list})
    #把读取的内容交给页面,然让页面交给浏览器

    book_list=Book.objects.all()
    paginator=Paginator(book_list,8)  #每页显示10个

    try:
        #当前页,如果取不到默认是1
        current_num=int(request.GET.get("page",1)) #当前页码
        book_list=paginator.page(current_num)  #展示当前页的10条数据
    except EmptyPage:
        book_list=paginator.page(1)  #强制更新为第一页


    if paginator.num_pages>11: #一般网页显示11页, 左5页,右5页,加上当前页一共11页
        if current_num-5 < 1:   #如果前5页的当前页-5 小于1的时候
            pageRange=range(1,11) #页码是初始状态
        elif current_num+5 > paginator.num_pages: #如果后5页中的当前页+5  大于总页数时
            ## 页码的列表:范围是(当前页-5,总页数+1)。因为range顾头不顾尾,需要加1
            pageRange=range(current_num-5,paginator.num_pages+1)
        else:
            # 页码的列表:后5页正常时,页码范围是(当前页-5,当前页+6)。注意不是+5,因为range顾头不顾尾!
            pageRange=range(current_num-5,current_num+6)
    else:
        pageRange=paginator.page_range  #页码列表

    print(paginator.page_range)  #range(1, 11)
    return render(request, "book_view.html", {"book_list": book_list, "current_num": current_num, "paginator": paginator,"pageRange":pageRange})

猜你喜欢

转载自www.cnblogs.com/kenD/p/10073096.html