Django REST framework 分页
三种分页:根据页码、根据索引、根据加密
- http://www.xx.com/courses/?page=1&size=10
- http://www.xx.com/courses/?offset=1&limit=10
- http://www.xx.com/courses/?page=sdf651sdf3
- # 页码越大查询速度越慢,为什么以及如何解决?
- 原因:页码越大,数据库需要扫描的行数越多,因为每次都是从0开始扫描。
- 解决:
- 1、直接限制显示的页数,比如就显示100页,往后翻都不看了;
- 2、记录当前页数据ID的最小值和最大值,再次分页时,根据ID现行筛选,速度非常快。
- 第一种简单粗暴,像百度、搜狗都是这样的;第二种就是使用了加密,即使懂
技术的也不知道?page=sdf651sdf3是第几页,不是你想跳到哪页就哪页的。
- # urls.py
- from django.conf.urls import url
- from appxx import views
- urlpatterns = [
- url(r"^authors/$", views.AuthorView.as_view()),
- ]
- # serializers.py
- from appxx import models
- from rest_framework import serializers
- class AuthorSerializer(serializers.ModelSerializer):
- class Meta:
- model = models.Author
- fields = "__all__"
- # views.py
- from appxx import models
- from appxx import serializers
- from rest_framework.views import APIView
- from rest_framework import pagination
- class MyPageNumberPagination(pagination.PageNumberPagination):
- page_query_param = "page" # URL参数名称
- page_size = 2 # 每页显示多少条数据
- page_size_query_param = "size" # page=2&size=3 --> 第二页显示4、5、6条的数据
- max_page_size = 8 # 每页最多显示多少条数据
- class AuthorView(APIView):
- def get(self, request):
- authors_list = models.Author.objects.all()
- my_page = MyPageNumberPagination()
- authors_page = my_page.paginate_queryset(queryset=authors_list, request=request, view=self)
- s = serializers.AuthorSerializer(authors_page, many=True)
- return Response(s.data)
- # return pnp.get_paginated_response(s.data)
Django REST framework 分页的更多相关文章
- django: django rest framework 分页
django: django rest framework 分页 2018年06月22日 13:41:43 linux_player_c 阅读数:665更多 所属专栏: django 实战 版权声 ...
- 05 Django REST Framework 分页
01-分页模式 rest framework中提供了三种分页模式: from rest_framework.pagination import PageNumberPagination, LimitO ...
- Django Rest Framework(分页、视图、路由、渲染器)
一.分页 试问如果当数据量特别大的时候,你是怎么解决分页的? 方式a.记录当前访问页数的数据id 方式b.最多显示120页等 方式c.只显示上一页,下一页,不让选择页码,对页码进行加密 1.基于lim ...
- Django REST Framework - 分页 - 渲染器 - 解析器
为什么要使用分页? 我们数据表中可能会有成千上万条数据,当我们访问某张表的所有数据时,我们不太可能需要一次把所有的数据都展示出来,因为数据量很大,对服务端的内存压力比较大还有就是网络传输过程中耗时也会 ...
- Django rest framework(7)----分页
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...
- Django Rest framework 之 分页
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...
- Django Rest Framework源码剖析(七)-----分页
一.简介 分页对于大多数网站来说是必不可少的,那你使用restful架构时候,你可以从后台获取数据,在前端利用利用框架或自定义分页,这是一种解决方案.当然django rest framework提供 ...
- django rest framework实现分页功能
在web开发中很多需求都需要实现分页功能,然而 Django Rest Framework 自带的分页功能,只能在 mixins.ListModelMixin and generics.Generic ...
- [Django REST framework - 自动生成接口文档、分页]
[Django REST framework - 自动生成接口文档.分页] 自动生成接口文档 # 后端人员写好接口,编写接口文档,给前端人员看,前端人员依照接口文档开发 # 公司里主流 -后端,使用w ...
随机推荐
- cocos2d-x 执行在 genymotion上面
1.jni/Application.mk加入红色圆圈内的參数 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWl6aXhpYW5zaGVuZw==/fon ...
- linux RHEL 修改hostname 不需要重启机器
1. 修改/etc/sysconfig/network 中的hostname HOSTNAME=newhostname 运行命令起作用: /etc/rc.d/rc.sysinit 2. 修改/ect/ ...
- sed 之 -n p
sed是一个面向字符流的编辑器,一般情况下每次读入一行到一个名为模式空间的地方,进行编辑:但是也可以读入多行数据进行编辑. -n:抑制默认输出 p打印模式空间内容 cat test a b sed ' ...
- go语言笔记——多值函数,本质上和nodejs的回调很像,不过nodejs是回调的第一个参数是err,而golang里是第二个!
5.2 测试多返回值函数的错误 Go 语言的函数经常使用两个返回值来表示执行是否成功:返回某个值以及 true 表示成功:返回零值(或 nil)和 false 表示失败(第 4.4 节).当不使用 t ...
- 特征选择--->卡方选择器
特征选择(Feature Selection)指的是在特征向量中选择出那些“优秀”的特征,组成新的.更“精简”的特征向量的过程.它在高维数据分析中十分常用,可以剔除掉“冗余”和“无关”的特征,提升学习 ...
- 在eclipse中如何在大量项目中查找指定文件(转载)
转载:http://blog.csdn.net/inowcome/article/details/6699227 在eclipse中如果希望在大量的项目中寻找指定的文件可不是一件轻松的事,还好ecli ...
- 湖南集训day6
难度:☆☆☆☆☆☆☆☆ /* 对于第一问:f[i][j]表示前i个数,当前黑板上的数为j的概率 当前有三种情况 1.当前数不是j的倍数—>黑板上的数字改变. 2.当前数是j的倍数且当前数在前i个 ...
- 题解报告:hdu 1564 Play a game(找规律博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1564 Problem Description New Year is Coming! ailyanlu ...
- CSS 样式的优先级(重要,一定要理解)
1. 同一元素引用了多个样式时,排在后面的样式属性的优先级高 例如,下面的 div,同时引用了 [.default] 和 [.user] 中的样式,其中 [.user] 样式中的 width 属性会替 ...
- 如何查看jdk的版本
(1)WINDOWS环境下 实验环境:WIN7 64bit 操作指令:cmd命令下输入“java -version” 参考如下:JDK1.7 (2).LINUX环境下 实验环境:CentOS 5.6 ...