1 项目数据量大了以后,比如涉及到分页,一页一页的加载显示
2 django中分页器组件,把分页常用的东西,封装到一个类中
3 实例化得到一个对象,对象里有属性和方法
2 分页器的简单使用
#######1 Paginator对象的属性和方法
book_list=models.Book.objects.all()
# 实例化得到对象
# 第一个参数:要分页的数据,book_list
# 第二个参数:没有条数
paginator=Paginator(book_list,10)
# Paginator对象的属性和方法
print(paginator.per_page) # 每页显示的条数
print(paginator.count) # 总条数,总共要分页多少条数据
print(paginator.num_pages) # 总页码数
print(paginator.page_range) # 页码的生成器 [1,2,3,4,5,6,7,8,9,10]
######3 Page对象的属性和方法
# Page类 的对象
page=paginator.page(2) # 第一页的对象
# 每一页的对象,属性和方法
print(page.has_next()) # 有没有下一页
print(page.next_page_number()) # 下一页页码
print(page.has_previous()) # 是否有上一页
print(page.previous_page_number()) # 上一页页面 (当前页如果是第一页,没有上一页)
print(page.object_list) # 当前页的所有数据
print(page.number) # 当前页的页码数
##### 4 表模型中默认以id排序
class Meta:
ordering=('id', ) # 默认以id排序
视图
def index(request):
# 需要的第三个参数
page_num_int=int(request.GET.get('page',1))
book_list = models.Book.objects.all()
paginator = Paginator(book_list, 10)
# 需要的第一个参数:页码的生成器 [1,2,3,4,5,6,7,8,9,10]
page_range = paginator.page_range
# 需要的第二个参数,去到某一页的page对象
page = paginator.page(page_num_int)
return render(request, 'index.html', {'page_range':page_range,'page':page,'page_num_int':page_num_int})
模板