一、搜索过滤的步骤

1、在全局配置文件settings.py中设置’DEFAULT_FILTER_BACKENDS’,‘DEFAULT_FILTER_BACKENDS’指定使用的过滤搜索引擎类路径(SearchFilter为搜索引擎类)

2、在继承了GenericAPIView的类视图中,search_fields类属性指定模型类中需要进行搜索过滤的字段名

3、利用postman进行搜索查询

4、如果我想改变搜索关键字search,怎么改?
直接将rest_framework\settings.py文件中的’SEARCH_PARAM’: ‘search’,复制到django中的setting.py文件中,改变search值即可
再利用postman进行搜索查询,得知成功

5、可以在字段名称前加相应的符号,指定查询类型,
‘^’: ‘istartswith’,
‘=’: ‘iexact’,
‘$’: ‘iregex’,
6、实例方法中必须调用filter_queryset方法,并且要传入查询集对象

7、想要在特定的视图类中进行过滤功能
a、首先导入:from rest_framework import filters
b、将filters.SearchFilter加入到filter_backends类属性中

filter_backends在继承了GenericAPIView的类视图中指定使用的过滤引擎类,优先级高于全局(settings.py文件)

二、排序过滤的步骤

1、在全局配置文件settings.py中设置’DEFAULT_FILTER_BACKENDS’,'DEFAULT_FILTER_BACKENDS’指定使用的排序过滤引擎类路径(OrderingFilter为排序引擎类)

2、 filter_backends在继承了GenericAPIView的类视图中指定使用的过滤引擎类(搜索过滤、排序过滤),优先级高于全局
在全局使用用的是类的路径字符串,在视图中用的引擎类的引用

3、将允许前端进行排序的字段放到ordering_fields类中,ordering_fields为列表,ordering_fields里之外的字段不允许进行排序

4、查询集为:将查询集进行过滤再赋予一个新的查询集

5、再利用postman进行搜索查询,得知成功

6、默认为升序排列,降序操作:
在排序字段前-:例如-name

7、如果对多个字段进行排序操作:
用逗号进行拼接

三、分页设置

1、在全局配置文件settings.py中设置’DEFAULT_PAGINATION_CLASS’,'DEFAULT_PAGINATION_CLASS’指定使用的分页引擎类路径(PageNumberPagination为分页引擎类)
2、需要指定PAGE_SIZE参数,表示每页展示多少条数据

3、
a、调用paginate_queryset方法对查询集对象进行分页,(不能传模型对象,因为模型对象只有一条数据,不做分页操作)
b、调用get_paginated_response方法,将序列化之后的数据进行分页,并返回Response响应

5、再利用postman进行分页查询,得知成功

6、 前端获取指定的页码以及页码中一定的数据
a、新建一个py文件(pagination.py),放到指定的文件夹下(utils)
b、重写PageNumberPagination方法(重写PageNumberPagination方法,为了继续使用该名称,可以用from rest_framework.pagination import PageNumberPagination as _PageNumberPagination实现)


7、可以在特定的类视图下指定分页引擎类,高于全局

8、前端请求后,要实现最大页和当前页
a、重写get_paginated_response方法,将操作后的数据为字典,再添加key为current_num、max_num,最后再返回response

9、postman访问,结果正确

django_rest_framework之GenericAPIView(二)之搜索、排序、分页讲解相关推荐

  1. django_rest_framework之GenericAPIView(一)源码讲解

    1.GenericAPIView是APIView的子类,所以具备APIView的所有功能 a.具备View的所有特性 b.提供了认证.授权.限流功能 c.将JsonResponse-->Resp ...

  2. 【技术分享】五:搜索排序-特征分析

    本文原作者:彭江军,经授权后发布. 原文链接:https://cloud.tencent.com/developer/article/1531448 导语: 数据决定了任务的上限,模型方法决定达到上限 ...

  3. ExtJs 备忘录(6)—— GirdPanl表格(二) [ 搜索分页 ]

    前言 近些天对于厚积薄发有深刻的理解,尤其是月末那两天,很想再写两篇文章,保持每周一篇--每月至少四篇以上的文章.写文章分两种情况:一种情况是已经积累了许多经验,写起来轻松且得心应手,内容和系列文章容 ...

  4. 排名算法(二)--淘宝搜索排序算法分析

    原文:https://blog.csdn.net/u011966339/article/details/78052569 淘宝搜索排序的目的是帮助用户快速的找到需要的商品.从技术上来说,就是在用户输入 ...

  5. 干货 | XGBoost在携程搜索排序中的应用

    作者简介 曹城,携程搜索部门高级研发工程师,主要负责携程搜索的个性化推荐和搜索排序等工作. 一.前言 在互联网高速发展的今天,越来越复杂的特征被应用到搜索中,对于检索模型的排序,基本的业务规则排序或者 ...

  6. 排序 np_干货 | XGBoost在携程搜索排序中的应用

    作者简介 曹城,携程搜索部门高级研发工程师,主要负责携程搜索的个性化推荐和搜索排序等工作. 一.前言 在互联网高速发展的今天,越来越复杂的特征被应用到搜索中,对于检索模型的排序,基本的业务规则排序或者 ...

  7. python elasticsearch 入门教程(二) ---全文搜索

    python elasticsearch 入门教程(二) ---全文搜索 截止目前的搜索相对都很简单:单个姓名,通过年龄过滤.现在尝试下稍微高级点儿的全文搜索--一项 传统数据库确实很难搞定的任务. ...

  8. mysql排序分页乱的_Mysql 排序分页混乱

    现象一 id=25这条数据,出现在第一页.第二页. 数据特征: 排序字段,重复率极高,仅有2个值. 数据库版本: 现象二 相同数据,在以下数据库版本,均排序分页正常. 8.0.11 5.6.46 第一 ...

  9. XGBoost在携程搜索排序中的应用

    一.前言 在互联网高速发展的今天,越来越复杂的特征被应用到搜索中,对于检索模型的排序,基本的业务规则排序或者人工调参的方式已经不能满足需求了,此时由于大数据的加持,机器学习.深度学习成为了一项可以选择 ...

  10. 二叉搜索树中第k大元素_二叉搜索树中第K个最小元素

    二叉搜索树中第k大元素 Problem statement: 问题陈述: Find the k-th smallest element in a given binary search tree (B ...

最新文章

  1. 初识Tcl(六):Tcl 数组
  2. Bootstrap中模态框多层嵌套时滚动条问题
  3. C语言socket设置超时的几种方法
  4. (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题
  5. 对于个人(注册表)与团队(团队表)(两张表没有关联)的展示与可空判断
  6. 推荐算法的先验算法的连接_数据挖掘专注于先验算法
  7. JMS学习五(ActiveMQ的本地事务)
  8. canvas笔记-文本水平垂直对齐与度量
  9. C++ wchar_t
  10. php网页302错误,swfupload提示“错误302”的解决方法
  11. 计算机研究生进中国银行,听说中行笔试把研究生学姐都难哭了…
  12. Python学习之使用Python发送邮件
  13. 做个轻松省力的父母的几个原则
  14. android开机自动启动app,android如何实现开机自动启动Service或app
  15. 微信开发 自动转发朋友圈 自动添加好友等等
  16. Grafana可视化工具-之数字映射字符串
  17. 软件项目的规模、工作量和成本是如何进行估算的
  18. matlab 2016b下载安装
  19. blast java_使用python实现BLAST
  20. 相似图片搜索的原理(1)

热门文章

  1. Oracle大象,大象工程(石头剪刀布PK游戏)
  2. 引导win7+linux系统安装,win7 + ubuntu16.04LTS双系统安装(Legacy引导模式)
  3. php5.6.33安装教程,centos7手动安装PHP5.6.33详解
  4. 数据中心系统管理员基础知识培训
  5. 成功解决tornado.application - ERROR - Exception in callback <bound method Nanny.memory_monitor of <Nanny
  6. DL之DNN优化技术:采用三种激活函数(sigmoid、relu、tanh)构建5层神经网络,权重初始值(He参数初始化和Xavier参数初始化)影响隐藏层的激活值分布的直方图可视化
  7. ML之FE:利用FE特征工程(分析两两数值型特征之间的相关性)对AllstateClaimsSeverity(Kaggle2016竞赛)数据集实现索赔成本值的回归预测
  8. TF之pix2pix之dataset:基于TF利用自己的数据集训练pix2pix模型之DIY自己的数据集
  9. Sklearn中的CV与KFold详解
  10. Pycharm下载tensorflow问题