视图函数中的代码
from django.shortcuts import render, HttpResponse, redirect import json from django.core.paginator import Paginator, EmptyPage from ajaxdemo.models import Book def bool_list(request): book_list = Book.objects.all() # 分页器 Paginator(要进行分页的数据,每页显示几条数据) paginator = Paginator(book_list, 10) # 得到总的 paginator对象 # print("count:", paginator.count) # 数据总数 num_pages = paginator.num_pages # 总页数 # page_range = paginator.page_range # 页码的列表 current_page_num = int(float(request.GET.get("page", 1))) if num_pages > 11: if current_page_num - 5 < 1: page_range = range(1, 11) elif current_page_num + 5 > num_pages: page_range = range(num_pages - 10, num_pages + 1) else: page_range = range(current_page_num - 5, current_page_num + 6) else: page_range = paginator.page_range # 获取浏览器发来的关于页码的信息。 默认显示第一页. int(float())转换一下。防止用户搞个小数过来 try: # 如何取到 某一页的数据 current_page = paginator.page(current_page_num) # 第一页的数据,返回一个可迭代页数的对象 # for i in page: # 遍历第一页的所有数据 # print(i) # print(current_page.object_list) # 获取当前页所有的数据 返回QuerySet对象。包含了当前页的所有book对象 except EmptyPage as e: # 捕获用户输入的数字超出或者太小时,默认返回首页 current_page = paginator.page(1) return render(request, "ajaxdemo/book_list.html", locals())
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css"> <script type="text/javascript" src="/static/jquery-3.3.1.js"></script> <title>Title</title> <style> {#.pagination > li{display: none}#} .pagination > li show { display: inline } </style> </head> <body> <ul> {% for book in current_page %} <li>{{ forloop.counter }},{{ book.title }},{{ book.price }}</li> {% endfor %} </ul> <nav aria-label="Page navigation"> <ul class="pagination"> {% 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 %} {% for page_num in page_range %} {% if current_page_num == page_num %} <li class="active"><a href="?page={{ page_num }}">{{ page_num }}</a></li> {% else %} <li><a href="?page={{ page_num }}">{{ page_num }}</a></li> {% endif %} {% endfor %} {% if current_page.has_next %} <li><a href="?page={{ current_page.next_page_number }}" aria-label="Next"><span aria-hidden="true">下一页</span></a></li> {% else %} <li class="disabled"><a href="" aria-label="Next"><span aria-hidden="true">下一页</span></a></li> {% endif %} </ul> </nav> </body> </html>