分页

DRF(二)| 分页、权限与授权

拟墨画扇 提交于 2019-12-11 08:33:29
文章目录 分页 1. PageNumberPagination 2. LimitOffsetPagination 3. CursorPagination 4. 在自定义函数中用drf分页器实现分页 权限管理 DRF授权管理 JWT(JSON WEB Token)授权管理 分页 1. PageNumberPagination 局部分页 # setting.py # drf相关配置 REST_FRAMEWORK = { "PAGE_SIZE": 2, } # views.py from rest_framework.pagination import PageNumberPagination class UserView(ListCreateAPIView): # 分页 pagination_class = PageNumberPagination 全局分页 # drf相关配置 REST_FRAMEWORK = { "PAGE_SIZE": 2, 'DEFAULT_PAGINATION_CLASS': "rest_framework.pagination.PageNumberPagination", } 效果 { "count": 6, "next": "http://127.0.0.1:8000/user/?page=3", "previous": "http://127.0.0.1

怎么进行分页数据的查询

我怕爱的太早我们不能终老 提交于 2019-12-11 04:36:38
这里是修真院后端小课堂,每篇分享文从 【怎么进行分页数据的查询 】 大家好,我是IT修真院上海分院第2期学员,一枚正直善良的java程序员,今天给大家分享一下,修真院java任务中的一个知识点:怎么进行分页查询,如何判断是否有下一页。 1.背景 网页的排列方式一般有两种,一种是一个页面能把所有内容显示完,还有一种是不能再一个页面中显示全部内容时,就要用分页来显示。 2.什么是分页 分页是将所有数据分段展示给用户的技术,用户看到的只是全部数据的其中一部分,用户可以通过页码或是翻页来进行跳转,知道找到自己想看到的内容。 3.在何处进行分页 可以进行分页处理的地方有:1客户端,2服务器,3数据库端。在客户端进行分页,需要进行传输的数据量很大,必然加大服务器的负载。在服务器端进行分页,大部分数据还是会被传输到服务器端。 所以,比较好的分页做法应该是每次翻页的时候只从数据库里检索相应页面大小的数据。 4.具体实现 利用sql语句:selct * from table_name order by id desc limit ?,? 将其写入dao中,命令为list方法,之后可以进行调用。 首先定义页面显示数量,int start=0;int count=5;将start和count作为参数传入之前的sql语句中,就可以实现在页面中显示5条数据。 根据页面提交的start,更新start的值

JSP分页与查询

岁酱吖の 提交于 2019-12-10 18:38:16
分页是什么 分页是一种将所有数据分段展示给用户的技术。用户每次看到的并不是全部数据,而是其中的一部分,如果在这部分数据中没有找到自己想要的内容,可以通过指定页码或是翻页的方式转换到其他内容,直到找到自己想要的内容为止。这种技术缩短了请求响应时间,而且也不会出现因数据过多导致页面冗长的情况,提高了用户体验。 下面是Servlet文件 下面是target.jsp文件 分页原理 : 浏览器直接请求index.jsp页面,该页面执行page()方法,此时pageNo的值为1,这时向DataServlet发送请求,并且将pageNo传过去; Servlet收到请求后(这里我们把pageSize规定为3,即3个数据为一页),通过sql语句中的limit,得到第一页数据,同时得到了数据的总条数count,从而计算得到总页数totalPage,我们把得到的数据通过request转发的方式,转发到target.jsp; target.jsp页面,将第一页数据遍历出来,同时将总页数附在了隐藏框的value中,一并返回到index.jsp的data中(我们用了 异步 的方法) 这时在index.jsp页面中我们可以选择上一页或者下一页,触发up函数以及down函数,使pageNo改变后再触发page()函数,从而实现分页与翻页。 查询原理 : 写一个文本框,再写一个按钮,按钮触发search()方法

Django中扩展Paginator实现分页

耗尽温柔 提交于 2019-12-10 15:58:07
Django中已经实现了很多功能,基本上只要我们需要的功能,都能够找到相应的包。要在Django中实现分页显示,只需要简单地使用Paginator就可以实现了。 首先,需要在应用的views.py中添加如下引用: from django.core.paginator import Paginator from django.core.paginator import PageNotAnInteger from django.core.paginator import EmptyPage 然后,在需要使用分页的view函数中,添加如下代码: blogs = Blog.objects.all() # Get released blogs paginator = Paginator(blogs, 8) try: blogs = paginator.page(page_num) except PageNotAnInteger: blogs = paginator.page(1) except EmptyPage: blogs = paginator.page(paginator.num_pages) 以上代码中,page_num是指的当前需要显示的页,要将当前页的内容显示出来,就跟使用原对象一样,基本没有什么区别,我们还是只需要像如下在模板中使用: {% for blog in blogs

ZLC众利币系统APP开发

こ雲淡風輕ζ 提交于 2019-12-10 15:51:26
开发版本:APP 开发语言:php,java,。net 下面我们来看一下tp5 分页具体怎么用: 一, 分页简洁版 简洁分页仅仅只有上下页的分页输出,可以使用下面的简洁分页代码: // 查询状态为1的用户数据 并且每页显示10条数据 $list = User::where('status',1)->paginate(10,true); // 把分页数据赋值给模板变量list $this->assign('list', $list); // 渲染模板输出 return $this->fetch(); 页面效果: 二, 分页详尽版 详尽分页是除了输出上下页,还会输出具体分页页码,小编是比较喜欢这种详尽的分页方式,因为这种方式可以很清楚的看到目前的数据大概又多少条,当然了,对于数据量较少的信息,也可以使用简介分页方式,话不多说,先附上代码: // 查询状态为1的用户数据 并且每页显示10条数据 总记录数为1000 $list = User::where('status',1)->paginate(10,5,true,[ 'path' => url('index'), 'type' => 'bootstrap', 'query' => ['numid'=>1] ])); // 获取分页显示 $page = $list->render(); // 模板变量赋值 $this->assign(

C# 分页逻辑处理类

故事扮演 提交于 2019-12-10 13:54:18
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Common { /// <summary> /// 分页逻辑处理类 /// </summary> public class PageCollection { /// <summary> /// 总页数 /// </summary> public int TotalPages { get; set; } /// <summary> /// 当前页面 /// </summary> public int CurrentPage { get; set; } /// <summary> /// 每页的记录数 /// </summary> public int OnePageSize { get; set; } /// <summary> /// 总记录数 /// </summary> public long TotalRows { get; set; } /// <summary> /// 排序 /// </summary> public string OrderBy { get; set; } /// <summary> /// 构造无参默认为最大数 /// </summary> public

MySQL分页查询优化

邮差的信 提交于 2019-12-10 04:03:12
当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。 准备工作 为了对下面列举的一些优化进行测试,下面针对已有的一张表进行说明。 表名:order_history 描述:某个业务的订单历史表 主要字段:unsigned int id,tinyint(4) int type 字段情况:该表一共37个字段,不包含text等大型数据,最大为varchar(500),id字段为索引,且为递增。 数据量:5709294 MySQL版本:5.7.16 线下找一张百万级的测试表可不容易,如果需要自己测试的话,可以写shell脚本什么的插入数据进行测试。 以下的 sql 所有语句执行的环境没有发生改变,下面是基本测试结果: select count(*) from orders_history; 返回结果:5709294 三次查询时间分别为: 8903 ms 8323 ms 8401 ms 一般分页查询 一般的分页查询使用简单的 limit 子句就可以实现。limit 子句声明如下: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于指定

简单测试linq to sql性能

有些话、适合烂在心里 提交于 2019-12-09 13:47:18
前些日子,做了一个物业收费系统,cs模式,用到了linq to sql 技术,这是我第一次使用这个东东写程序存取数据库,迷迷糊糊搞得一塌糊涂,当时有个同学他们找好的分页组件,然后写好了调用方法,由于时间比较急,而且第一次用,所以没有怎么研究就直接按照注释使用他们写好的分页方法,然而开发过程中一直都对他们写的方法有怀疑,会不会是一种投机取巧,胡编乱造的?后来我也做过一些简单分析,我发现程序在业务逻辑层中每次都从数据库中将数据全部读取出来,然后循环将数据转成特定的List,也就是遍历整个数据集合,然后在显示层中将List进行分页,最后放到DataGridView中,其中列名自动设定为类的属性值,刚开始我还一直认为这样的方法好方便啊,一下子全部生成了,直到程序马上接近尾声时,我发现程序的操作日志记录已经达到了4500条,每次打开日志管理界面时,程序都要加载上半天才能出来,我彻底对linq产生了怀疑,确切的说并不是对linq产生怀疑,而是分页方法以及程序算法产生了怀疑。 显示层的分页代码部分: 1 dataGridView.DataSource = data.Take(pagerControl1.PageSize * pagerControl1.PageIndex).Skip(pagerControl1.PageSize * (pagerControl1.PageIndex - 1))

Hibernate中的query.setFirstResult(),query.setMaxResu

♀尐吖头ヾ 提交于 2019-12-09 13:41:29
一、query.scroll()和query.setFirstResult(),query.setMaxResults();这两种方法都可以取到一定范围内的数据,用来数据分页显示。那么两者区别,以及两者的效率如何? 答:1.scroll是用JDBC2.0的可滚动结果集实现;query.setMaxResults();query.setFirstResult()是数据库SQL语句实现。 2.你说是在数据库就分页好呢?还是把结果集都取到内存再分页好呢?(应该是在数据库就分了好些吧,但是如果在内存分页的话,换页的时候是不是更快一些呢?) 3.在数据库进行分页是首选的方式。数据库分页实际上是利用数据库本身SQL扩展的功能进行分页,例如MySQL的 limit 0,50这样的SQL语句。不但速度快,而且非常节省内存。不过不是每种数据库的都有这种分页支持的SQL,例如SQL Server就不支持。 4.scroll是利用JDBC2.0的功能做分页的,那么就完全取决于特定数据库的JDBC Driver的实现了。事实上大部分JDBC Driver都是把所有的结果集都一次取到内存,然后再分页的。如果这个结果集非常大,例如几万条,不但程序执行速度会很慢,而且很容易导致out of memory。当然个别JDBC Driver使用了服务器端游标来实现,那么就不会导致这种问题,例如jTDS。 二

MySQL大数据量分页SQL语句优化

天大地大妈咪最大 提交于 2019-12-08 18:09:32
原创地址:http://www.phpernote.com/mysql/963.html 分页程序原理很简单,这里就不多说了,本篇文章主要说的是在数据表记录量比较大的情况下,如何将分页SQL做到更优化,让 MySQL 执行的更快的方法。 一般的情况下,我们的分页SQL语句是这样的: 查看代码 打印 1 SELECT * FROM table ORDER BY id LIMIT 1000,10; 以上SQL语句在原理上和在实际操作中是不会存在什么问题,但是当table表的数据量达到几十万以上的时候,上面的语句执行一遍,可能会要执行个十几秒的时间,并且当页数越靠后的话,执行的时间会越长,这个时候我们就需要找到一种更快的查询办法来替代这种操作了。 网上已经有很多 优化 的方法,基本都是这样的: 查看代码 打印 1 SELECT * FROM table WHERE id >= ( SELECT id FROM table LIMIT 1000000, 1) LIMIT 10; 以上SQL语句是一个不错的解决方法,分页查询的速度基本会保持在1秒之内,但据经验总结得出还有一种更好的办法,如下: 查看代码 打印 1 SELECT * FROM table WHERE id BETWEEN 1000000 AND 1000010; 相比以上的解决办法,在速度上还会快了不少。