一、分页器对象
from django.core.paginator import Paginator,EmptyPage
book_list = Book.objects.all() #假设有100条数据
#分页器 每页展示条数:8条paginator = Paginator(book_list, 8) #返回Paginator对象# print(paginator.count) #数据总条数 100# print(paginator.num_pages) #总页数 13# print(paginator.page_range) #页码的列表 range(1,14)current_page = int(request.GET.get('page')) #拿到前端传的页码 url: http://localhost:8000/index?page=3
二、template中:当前页数据对象
curr_pg_obj = paginator.page(current_page) #拿到当前页的数据对象
#下面两种方式取数据
1,curr_pg_obj.object_list #QuerySet只有8条数据2,for item in curr_pg_obj: print(item)-----------template模板-----------
循环页码:页数paginator.num_pages循环内容:当前页对象curr_pg_objfor pg in pages:
if pg=curr_pg print(选中的pg)else print(pg)--------------------------------------
# curr_pg_obj.has_next() 是否有下一页
# curr_pg_obj.next_page_number() 下一页页码# curr_pg_obj.has_previous() 是否有上一页# curr_pg_obj.previous_page_number() 上一页的页码# 抛错
#page=paginator.page(99) # error:EmptyPage #page=paginator.page("z") # error:PageNotAnInteger
Title 分页器
{ % for book in curr_pg_obj %}
- { { book.title }} -----{ { book.price }}
{ % endfor %}{ % if curr_pg_obj.has_previous %}
- 上一页
{ % else %}- 上一页
{ % endif %} { % for num in paginator.page_range %} { % if num == currentPage %}- { { num }}
{ % else %}- { { num }}
{ % endif %} { % endfor %} { % if curr_pg_obj.has_next %}- 下一页
{ % else %}- 下一页
{ % endif %}
posted on 2019-04-19 02:00 阅读( ...) 评论( ...)