三种分页:根据页码、根据索引、根据加密

  1. http://www.xx.com/courses/?page=1&size=10
  2. http://www.xx.com/courses/?offset=1&limit=10
  3. http://www.xx.com/courses/?page=sdf651sdf3
  1. # 页码越大查询速度越慢,为什么以及如何解决?
  2.  
  3. 原因:页码越大,数据库需要扫描的行数越多,因为每次都是从0开始扫描。
  4.  
  5. 解决:
  6. 1、直接限制显示的页数,比如就显示100页,往后翻都不看了;
  7. 2、记录当前页数据ID的最小值和最大值,再次分页时,根据ID现行筛选,速度非常快。
  8.  
  9. 第一种简单粗暴,像百度、搜狗都是这样的;第二种就是使用了加密,即使懂
    技术的也不知道?page=sdf651sdf3是第几页,不是你想跳到哪页就哪页的。
  1. # urls.py
  2. from django.conf.urls import url
  3. from appxx import views
  4.  
  5. urlpatterns = [
  6. url(r"^authors/$", views.AuthorView.as_view()),
  7. ]
  1. # serializers.py
  2. from appxx import models
  3. from rest_framework import serializers
  4.  
  5. class AuthorSerializer(serializers.ModelSerializer):
  6. class Meta:
  7. model = models.Author
  8. fields = "__all__"
  1. # views.py
  2. from appxx import models
  3. from appxx import serializers
  4. from rest_framework.views import APIView
  5. from rest_framework import pagination
  6.  
  7. class MyPageNumberPagination(pagination.PageNumberPagination):
  8. page_query_param = "page" # URL参数名称
  9. page_size = 2 # 每页显示多少条数据
  10. page_size_query_param = "size" # page=2&size=3 --> 第二页显示4、5、6条的数据
  11. max_page_size = 8 # 每页最多显示多少条数据
  12.  
  13. class AuthorView(APIView):
  14. def get(self, request):
  15. authors_list = models.Author.objects.all()
  16. my_page = MyPageNumberPagination()
  17. authors_page = my_page.paginate_queryset(queryset=authors_list, request=request, view=self)
  18. s = serializers.AuthorSerializer(authors_page, many=True)
  19. return Response(s.data)
  20. # return pnp.get_paginated_response(s.data)

Django REST framework 分页的更多相关文章

  1. django: django rest framework 分页

    django: django rest framework 分页 2018年06月22日 13:41:43 linux_player_c 阅读数:665更多 所属专栏: django 实战   版权声 ...

  2. 05 Django REST Framework 分页

    01-分页模式 rest framework中提供了三种分页模式: from rest_framework.pagination import PageNumberPagination, LimitO ...

  3. Django Rest Framework(分页、视图、路由、渲染器)

    一.分页 试问如果当数据量特别大的时候,你是怎么解决分页的? 方式a.记录当前访问页数的数据id 方式b.最多显示120页等 方式c.只显示上一页,下一页,不让选择页码,对页码进行加密 1.基于lim ...

  4. Django REST Framework - 分页 - 渲染器 - 解析器

    为什么要使用分页? 我们数据表中可能会有成千上万条数据,当我们访问某张表的所有数据时,我们不太可能需要一次把所有的数据都展示出来,因为数据量很大,对服务端的内存压力比较大还有就是网络传输过程中耗时也会 ...

  5. Django rest framework(7)----分页

    目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...

  6. Django Rest framework 之 分页

    RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...

  7. Django Rest Framework源码剖析(七)-----分页

    一.简介 分页对于大多数网站来说是必不可少的,那你使用restful架构时候,你可以从后台获取数据,在前端利用利用框架或自定义分页,这是一种解决方案.当然django rest framework提供 ...

  8. django rest framework实现分页功能

    在web开发中很多需求都需要实现分页功能,然而 Django Rest Framework 自带的分页功能,只能在 mixins.ListModelMixin and generics.Generic ...

  9. [Django REST framework - 自动生成接口文档、分页]

    [Django REST framework - 自动生成接口文档.分页] 自动生成接口文档 # 后端人员写好接口,编写接口文档,给前端人员看,前端人员依照接口文档开发 # 公司里主流 -后端,使用w ...

随机推荐

  1. cocos2d-x 执行在 genymotion上面

    1.jni/Application.mk加入红色圆圈内的參数 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWl6aXhpYW5zaGVuZw==/fon ...

  2. linux RHEL 修改hostname 不需要重启机器

    1. 修改/etc/sysconfig/network 中的hostname HOSTNAME=newhostname 运行命令起作用: /etc/rc.d/rc.sysinit 2. 修改/ect/ ...

  3. sed 之 -n p

    sed是一个面向字符流的编辑器,一般情况下每次读入一行到一个名为模式空间的地方,进行编辑:但是也可以读入多行数据进行编辑. -n:抑制默认输出 p打印模式空间内容 cat test a b sed ' ...

  4. go语言笔记——多值函数,本质上和nodejs的回调很像,不过nodejs是回调的第一个参数是err,而golang里是第二个!

    5.2 测试多返回值函数的错误 Go 语言的函数经常使用两个返回值来表示执行是否成功:返回某个值以及 true 表示成功:返回零值(或 nil)和 false 表示失败(第 4.4 节).当不使用 t ...

  5. 特征选择--->卡方选择器

    特征选择(Feature Selection)指的是在特征向量中选择出那些“优秀”的特征,组成新的.更“精简”的特征向量的过程.它在高维数据分析中十分常用,可以剔除掉“冗余”和“无关”的特征,提升学习 ...

  6. 在eclipse中如何在大量项目中查找指定文件(转载)

    转载:http://blog.csdn.net/inowcome/article/details/6699227 在eclipse中如果希望在大量的项目中寻找指定的文件可不是一件轻松的事,还好ecli ...

  7. 湖南集训day6

    难度:☆☆☆☆☆☆☆☆ /* 对于第一问:f[i][j]表示前i个数,当前黑板上的数为j的概率 当前有三种情况 1.当前数不是j的倍数—>黑板上的数字改变. 2.当前数是j的倍数且当前数在前i个 ...

  8. 题解报告:hdu 1564 Play a game(找规律博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1564 Problem Description New Year is Coming! ailyanlu ...

  9. CSS 样式的优先级(重要,一定要理解)

    1. 同一元素引用了多个样式时,排在后面的样式属性的优先级高 例如,下面的 div,同时引用了 [.default] 和 [.user] 中的样式,其中 [.user] 样式中的 width 属性会替 ...

  10. 如何查看jdk的版本

    (1)WINDOWS环境下 实验环境:WIN7 64bit 操作指令:cmd命令下输入“java -version” 参考如下:JDK1.7 (2).LINUX环境下 实验环境:CentOS 5.6 ...