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 ...
随机推荐
- LeetCode 824. Goat Latin (山羊拉丁文)
题目标签:String 首先把vowel letters 保存入 HashSet. 然后把S 拆分成 各个 word,遍历每一个 word: 当 word 第一个 字母不是 vowel 的时候,把第一 ...
- hdu 1248 寒冰王座(暴力)
寒冰王座 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- [LeetCode][Java] Trapping Rain Water
题意: Given n non-negative integers representing an elevation map where the width of each bar is 1, co ...
- 20170623_oracle_SQL
============SQL分类 数据定义语言(DDL):CREATE ALERT DROP TRUNCATE 数据操纵语言(DML):INSERT UPDATE DELETE SELECT 事务控 ...
- jquery操作删除元素
通过 jQuery,可以很容易地删除已有的 HTML 元素. 删除元素/内容 如需删除元素和内容,一般可使用以下两个 jQuery 方法: remove() - 删除被选元素(及其子元素) empty ...
- LIBTOOL is undefined 问题的解决方法
configure.ac:10: error: possibly undefined macro: AC_PROG_LIBTOOL If this token and others are legit ...
- 如何为你的Go应用创建轻量级Docker镜像?
介绍 多什么? 简单来讲,多阶段. 多阶段允许在创建Dockerfile时使用多个from,它非常有用,因为它使我们能够使用所有必需的工具构建应用程序.举个例子,首先我们使用Golang的基础镜像,然 ...
- Instantaneous Transference(强连通分量及其缩点)
http://poj.org/problem?id=3592 题意:给出一个n*m的矩阵,左上角代表起始点,每个格子都有一定价值的金矿,其中‘#’代表岩石不可达,‘*’代表时空门可以到达指定格子,求出 ...
- [Swift通天遁地]九、拔剑吧-(10)快速创建美观的聊天界面:可发送文字、表情、图片
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- selenium3 + python - action_chains源码分析
ActionChains简介 actionchains是selenium里面专门处理鼠标相关的操作如:鼠标移动,鼠标按钮操作,按键和上下文菜单(鼠标右键)交互.这对于做更复杂的动作非常有用,比如悬停和 ...