django中的分页

分页在现在的网站应用中是非常用的,在Django 中要实现分页,是一件很简单的事情。使用Paginator,但是这种方法在小数据量,几百条时,可以使用。一旦数据大起来之后,效率就非常低下了。articles = Article.objects.all() paginator = Paginator(articles,20) //表示每页20条数据articleList = paginator.page(1) //表示取第一页的数据假如Article有100000条记录,那么Article.objects.all()就还得先把这100000条记录给取出来之后,在内存里面分页。效率非常低下。于是,我们抛弃了Paginator。首先,如果一页只需要显示20条数据,那么我们只需要从数据库查询20条记录即可,像这样:获得第一页的数据:posts = Article.objects.all()[0:20] 获得第二页的数据:posts = Article.objects.all()[20:40] 第三页之后的数据获取方式以此类推。这种方式与以下这种方式是不同的:posts = Article.objects.all() posts = posts[0:20] 前者利用QuerySets的惰性,这意味着只在对数据库进行求值之后才会对它们执行查询,这比立即查询的速度更快。这种惰性利用python的分片功能,Article.objects.all()[0:20]在实际查询中用0作为offset,20作为limit,翻译为sql语句就是:select * from Article limit 20 offset 0;这样的查询可以极大提高查询性能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值