views中
思路:
views
1、将数据库内容按 10条/页 显示在前端
2、排错:EmptyPage 当page=-1时 显示首页
3、当数据量大时,分页器上限制限制页码数量
前端
1、遍历显示数据库传来的当前页信息
2、上一页,下一页的<a>链接
3、利用bootstrap,历遍显示页码,实现鼠标悬浮变色
views
# 分页器from app01.models import Bookfrom django.core.paginator import Paginator,EmptyPagedef page(request): ''' book_list=[] 数据批量插入一张数据表中 for i in range(0,101): book_obj = Book(name='book%s'%i,price=i*i) book_list.append(book_obj) Book.objects.bulk_create(book_list) ''' # 分页器的试用 booklist = Book.objects.all() paginator = Paginator(booklist,10) #每页最多显示10个数据 print(paginator.count) # 数据总数 print(paginator.num_pages) # 总页数 print(paginator.page_range) # 页码列表 current_page_num = int(request.GET.get('page', 1)) # 得到一个参数page默认等于1 前端?page=1 #分页器上最多显示11个页码 if paginator.num_pages>11: if current_page_num-5 <= 0: page_range = range(1, 11) elif current_page_num+5> paginator.num_pages: page_range = range(paginator.num_pages-11,paginator.num_pages+1) else: page_range = range(current_page_num - 5, current_page_num + 5) else: page_range = paginator.page_range try: #防止page=-1时报错 current_page = paginator.page(current_page_num) for i in current_page: #遍历当前页的数据 print(i) # page2 = paginator.page(2) # page2.has_next() 是否有下一行 # page2.next_page_number() 下一页页码 # page2.has_previous() 是否有上一页 # page2.previous_page_number() 上一页页码 except EmptyPage as e: current_page = paginator.page(1) #第一页的page对象 return render(request,'page.html',locals())
前端
Title {#每页显示内容#}
- {% for book in current_page %}
- { { book.name }}:{ { book.price }} {% endfor %}