参考博文:https://www.cnblogs.com/yuanchenqi/articles/9036515.html

精华总结

1,批量导入:
    book_list=[]
    for i in range(100):
        book=Book(title="book_%s"%i,price=i*i)
        book_list.append(book)

    Book.objects.bulk_create(book_list)
2,分页器:
    paginator=Paginator(book_list,3)
    print("count:",paginator.count)           #数据总数
    print("num_pages",paginator.num_pages)    #总页数
    print("page_range",paginator.page_range)  #页码的列表
3,当前页
    current_page_num=int(request.GET.get("page",1))  # 1代表默认第一页
4,页面超出范围
    except EmptyPage as e:
         current_page=paginator.page(1)     # 显示第一页
5,下面点击数字         
    {% for item in page_range %}
        li><a href="?page={{ item }}">{{ item }}</a></li>  # ?page={{ item }} 跳转当前页面  
    {% endfor %}
6,当前页码变色
    {% if current_page_num == item %}
        <li class="active"><a href="?page={{ item }}">{{ item }}</a></li>
    {% else %}
        <li><a href="?page={{ item }}">{{ item }}</a></li>
    {% endif %}    
7,上一页
    页码:
        <li><a href="?page={{ current_page_num|add:-1 }}" aria-label="Previous"><span aria-hidden="true">上一页
    分页对象:
        <li><a href="?page={{ current_page.previous_page_number  }}" aria-label="Previous"><span aria-hidden="true">上一页
8,上下页
    print(page2.has_next())            #是否有下一页
    print(page2.next_page_number())    #下一页的页码
    print(page2.has_previous())        #是否有上一页
    print(page2.previous_page_number()) #上一页的页码
9,当前页有无下一页
    {% if current_page.has_previous %}
    <li><a href="?page={{ current_page.previous_page_number  }}" aria-label="Previous"><span aria-hidden="true">上一页</span></a></li>
    {% else %}
    <li class="disabled"><a href="" aria-label="Previous"><span aria-hidden="true">上一页</span></a></li>
    {% endif %}
10,显示11个页码
    view代码:
    if paginator.num_pages>11:  # 页码数超过11    

        if current_page_num-5<1:  # 小于1页
            page_range=range(1,12)
        elif current_page_num+5>paginator.num_pages:  # 大于最后一页    
            page_range=range(paginator.num_pages-10,paginator.num_pages+1)

        else:
            page_range=range(current_page_num-5,current_page_num+6)  # 当前页码,左边右边都是5页
    else:
        page_range=paginator.page_range
    页面代码:
    {% for item in page_range %}
View Code

相关文章: