【Django】QuerySet的分页和排序

数据查询分页功能和排序功能大家都很熟悉,本文以一个小例子介绍一下Django后台实现

数据列表

id依次从6到1

[

{

"detail": "this is test",

"CreateTime": "2016-05-22 00:06:36",

"ModifyTime": "2016-05-22 00:06:36",

"IsDelete": "False",

"Type": "test",

"id": "6",

"idUser_id": "1"

},

{

"detail": "this is test",

"CreateTime": "2016-05-22 00:06:17",

"ModifyTime": "2016-05-22 00:06:17",

"IsDelete": "False",

"Type": "test",

"id": "5",

"idUser_id": "1"

},

{

"detail": "this is test",

"CreateTime": "2016-05-22 00:06:17",

"ModifyTime": "2016-05-22 00:06:17",

"IsDelete": "False",

"Type": "test",

"id": "4",

"idUser_id": "1"

},

{

"detail": "this is test",

"CreateTime": "2016-05-22 00:06:16",

"ModifyTime": "2016-05-22 00:06:16",

"IsDelete": "False",

"Type": "test",

"id": "3",

"idUser_id": "1"

},

{

"detail": "this is test",

"CreateTime": "2016-05-22 00:06:15",

"ModifyTime": "2016-05-22 00:06:15",

"IsDelete": "False",

"Type": "test",

"id": "2",

"idUser_id": "1"

},

{

"detail": "this is test",

"CreateTime": "2016-05-22 00:06:12",

"ModifyTime": "2016-05-22 00:06:12",

"IsDelete": "False",

"Type": "test",

"id": "1",

"idUser_id": "1"

}

]

分页显示

分页有两个重要的参数,一个是每页显示的记录条数,一个是页码。

数据表查询主体代码,实现比较简单,就不解释太多,直接看代码

稍微提醒下的两点,网上很多文章都介绍了

1、分片代码lUserLogs[start:end],这样书写只会从数据库中获取onePageCount数据,不会获取所有数据

2、lUserLogs.count()方式统计总数,不要用len(lUserLogs),前者是select count(*)语法,后者会返回整个查询结果集

分页获取第一页

onePageCount表示单页个数,默认为20,page表示页码,默认为1

GET http://127.0.0.1:8000/UserLog/?onePageCount=2&page=1

-- response --

200 OK

Date: Sun, 22 May 2016 04:07:04 GMT

Server: WSGIServer/0.1 Python/2.7.10

Vary: Cookie

X-Frame-Options: SAMEORIGIN

Content-Type: application/json

Set-Cookie: csrftoken=MA0QfFh87zllpjQT0BLuPB16F7WAOiH8; expires=Sun, 21-May-2017 04:07:04 GMT; Max-Age=31449600; Path=/

[{"detail": "this is test", "CreateTime": "2016-05-22 00:06:36", "ModifyTime": "2016-05-22 00:06:36", "IsDelete": "False", "Type": "test", "id": "6", "idUser_id": "1"}, {"detail": "this is test", "CreateTime": "2016-05-22 00:06:17", "ModifyTime": "2016-05-22 00:06:17", "IsDelete": "False", "Type": "test", "id": "5", "idUser_id": "1"}]

分页获取第二页

GET http://127.0.0.1:8000/UserLog/?onePageCount=2&page=2

-- response --

200 OK

Date: Sun, 22 May 2016 04:11:07 GMT

Server: WSGIServer/0.1 Python/2.7.10

Vary: Cookie

X-Frame-Options: SAMEORIGIN

Content-Type: application/json

Set-Cookie: csrftoken=MA0QfFh87zllpjQT0BLuPB16F7WAOiH8; expires=Sun, 21-May-2017 04:11:07 GMT; Max-Age=31449600; Path=/

[{"detail": "this is test", "CreateTime": "2016-05-22 00:06:17", "ModifyTime": "2016-05-22 00:06:17", "IsDelete": "False", "Type": "test", "id": "4", "idUser_id": "1"}, {"detail": "this is test", "CreateTime": "2016-05-22 00:06:16", "ModifyTime": "2016-05-22 00:06:16", "IsDelete": "False", "Type": "test", "id": "3", "idUser_id": "1"}]

排序

我这的数据表很多都需要排序,默认的排序方式都一样,所以提取出基类如下

排序代码ordering = [‘-ModifyTime‘,‘-CreateTime‘,‘-id‘]

-符号表示逆序,从大到小,从最新的到最老的

实际的表继承基类即可

返回的数据就如同文首的数据以及本文其他的JSON返回数据结构一样,按照ordering定义的顺序排列

时间: 2024-10-10 19:43:38

【Django】QuerySet的分页和排序的相关文章

使用插件bootstrap-table实现表格记录的查询、分页、排序等处理

在业务系统开发中,对表格记录的查询.分页.排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这个bootstrap-table是一款非常有名的开源表格插件,在很多项目中广泛的应用.Bootstrap-table插件提供了非常丰富的属性设置,可以实现查询.分页.排序.复选框.设置显示列.Card view视图.主从表显示.合并列.国际化处理等处理功能,而且该插件同时也提供了一些不错的扩展功能,如移动行.移动列位置等一些特殊的功能,插件可

SpringBoot JPA实现增删改查、分页、排序、事务操作等功能

今天给大家介绍一下SpringBoot中JPA的一些常用操作,例如:增删改查.分页.排序.事务操作等功能.下面先来介绍一下JPA中一些常用的查询操作: //And --- 等价于 SQL 中的 and 关键字,比如 findByHeightAndSex(int height,char sex): public List<User> findByHeightAndSex(int height,char sex); // Or --- 等价于 SQL 中的 or 关键字,比如 findByHeig

DWZ分页、排序失效小结

1. 在视图文件中与分页相关的代码段 1 <form id="pagerForm" method="post" action="w_list.html"> 2 <input type="hidden" name="pageNum" value="1" /> 3 <input type="hidden" name="numPerP

合并多个python list以及合并多个 django QuerySet 的方法

在用python或者django写一些小工具应用的时候,有可能会遇到合并多个list到一个 list 的情况.单纯从技术角度来说,处理起来没什么难度,能想到的办法很多,但我觉得有一个很简单而且效率比较高的方法是我以前没注意到的.那就是利用 chain 方法来合并多个list. 同样也可以用来合并django 的 QuerySet. #coding:utf-8 from itertools import chain a = [1,2,"aaa",{"name":&qu

应用程序框架实战二十四:基础查询扩展 - 分页与排序

上一篇介绍了IQueryable的Where方法存在的问题,并扩展了一个名为Filter的过滤方法,它是Where方法的增强版.本篇将介绍查询的另一个重要主题——分页与排序. 对于任何一个信息系统,查询都需要分页,因为不可能直接返回表中的所有数据. 如果直接使用原始的Ado.Net,我们可以编写一个通用分页存储过程来进行分页查询,然后通过一个DataTable返回给业务层.不过进入Entity Framework时代,分页变得异常简单,通过Skip和Take两个方法配合就可以完成任务. 为了让分

整合Spring Data JPA与Spring MVC: 分页和排序

之前我们学习了如何使用Jpa访问关系型数据库.比较完整Spring MVC和JPA教程请见Spring Data JPA实战入门,Spring MVC实战入门. 通过Jpa大大简化了我们对数据库的开发工作.但是,之前的例子中我们只提到了最简单的CRUD(增删改查)操作.实际上,Spring Data Jpa对于分页以及排序的查询也有着完美的支持,接下来,我们来学习如何通过Pageable来对数据库进行分页查询. 添加maven依赖 首先我们需要引入Jpa,数据库直接使用hsqldb内存数据库就可

easyui datagrid 客户端搜索、分页、排序

easyui datagrid的排序默认是服务器端排序,可以用sorter实现客户端排序[2]:客户端分页可用filter实现[3]:客户端搜索同样可以用filter实现. 不多说直接上代码: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="keywords" con

Datagrid分页、排序、删除代码

<%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="datagrid.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD

django学习2分页

在django中有一个分页的函数,但是我个人觉得不是很好,有的功能不能定制感觉有点不方便,在另外一方面出于学习的目的,我又自己写了一遍分页的代码用户来实现定制化的内容,在django中自带的分页函数是这样的(django-pagination)使用的时候只需要调用一下就可以了. 现在我们自己来实现一下分页的功能,这个是最后调用的格式 from django.shortcuts import render_to_response from DjangoBlog.blog import models