参考博文: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 %}