首页 > 其他分享 >过滤组件

过滤组件

时间:2023-12-28 15:57:51浏览次数:31  
标签:search name price filter 过滤 组件 class

过滤组件的使用

有两种使用方式

 

方式一:使用drf内置过滤类

第一步:保证视图类继承 GenericAPIView 及其子类

# 以图书类为例
class BookView(ViewSetMixin, ListAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

 

第二步:导入过滤类的相关模块

from rest_framework.filters import SearchFilter

 

第三步:在类中配置属性

filter_backends = [SearchFilter]
    # search_fields = ['name']

    # 既能按名字,又能按价格
    search_fields = ['name', 'price']

完整代码如下:

class BookView(ViewSetMixin, ListAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

    filter_backends = [SearchFilter]
    search_fields = ['name', 'price']

 

第四步:前端访问方式

搜索方式固定——必须是?search=xx

ttp://127.0.0.1:8000/api/v1/books/?search=1   只要名字或price中有1关键字,都能搜出来

 

缺点:自带模块不支持 name=西游记&price=33 这种过滤方式,因此我们可以借助第三方模块

 

 

方式二:使用第三方 django-filter 过滤类

第一步:下载django-filter模块

pip3 install django-filter

 

第二步:导入模块

from django_filters.rest_framework import DjangoFilterBackend

 

第三步:视图类配置使用

class BookView(ViewSetMixin, ListAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

    filter_backends = [DjangoFilterBackend]
    filterset_fields = ['name', 'price']

 

第四步:前端访问

http://127.0.0.1:8000/api/v1/books/?name=西游记&price=11 #支持同时查询书名为西游记并且价格为11 的图书

 

标签:search,name,price,filter,过滤,组件,class
From: https://www.cnblogs.com/wellplayed/p/17932874.html

相关文章

  • 排序组件
    排序组件快速使用第一步:视图类需继承GenericAPIView或其子类#以图书类为例classBookView(ViewSetMixin,ListAPIView):queryset=Book.objects.all()serializer_class=BookSerializer 第二步:导入排序类相关组件#drf内置了排序类fromrest_framework.f......
  • layui 树组件tree 通过API获取数据
    一、简单vartreedata=[]; tree.render({ elem:'#addLeftType', id:'demoId', data:treedata, showCheckbox:true, oncheck:function(obj){ console.log(obj.data);//得到当前点击的节点数据 console.log(obj.checked);//节点是否被选中 console.l......
  • Unity3D 基类脚本怎么分别获取多个子类脚本的组件详解
    Unity3D是一款非常流行的游戏开发引擎,它提供了丰富的功能和工具,使得开发者可以轻松地创建高质量的游戏。在Unity3D中,脚本是游戏对象的一部分,它们通过附加到游戏对象上的组件来实现特定的功能。本文将详细介绍在Unity3D中如何分别获取多个子类脚本的组件,并提供相应的代码实现。对......
  • 【Java】过滤器和拦截器的位置
    过滤器(Fliter)和拦截器(Intercetor)区别 过滤器(Fliter)拦截器(Interceptor)总结定义位置Fliter定义在java.servlet包下 接口HandlerInterceptor定义在org.springframework.web.servlet包下 配置位置配置在web.xml中 配置在springmvc.xml中 作用位置Fliter在......
  • WSO2是一个开源的API管理平台,它提供了一套完整的解决方案,用于设计和发布API,创建和管理
    WSO2是一个开源的API管理平台,它提供了一套完整的解决方案,用于设计和发布API,创建和管理开发人员社区,以及以可扩展的方式保护和路由API流量¹。它利用来自WSO2平台的成熟组件来保护,集成和管理API¹。此外,它还与WSO2分析平台集成,提供现成的报告和警报,让您即时了解API行为¹。WSO2API......
  • 内置组件-Teleport
    介绍<Teleport>是一个内置组件,它可以将一个组件内部的一部分模板“传送”到该组件的DOM结构外层的位置去。基本用法​有时我们可能会遇到这样的场景:一个组件模板的一部分在逻辑上从属于该组件,但从整个应用视图的角度来看,它在DOM中应该被渲染在整个Vue应用外部的其他地方......
  • 内置组件-Transition
    介绍<Transition>是一个内置组件,这意味着它在任意别的组件中都可以被使用,无需注册。它可以将进入和离开动画应用到通过默认插槽传递给它的元素或组件上。进入或离开可以由以下的条件之一触发:由v-if所触发的切换由v-show所触发的切换由特殊元素切换的动态组件改变特殊......
  • 内置组件-TransitionGroup
    介绍<TransitionGroup>是一个内置组件,用于对v-for列表中的元素或组件的插入、移除和顺序改变添加动画效果。和<Transition>的区别​<TransitionGroup>支持和<Transition>基本相同的props、CSS过渡class和JavaScript钩子监听器,但有以下几点区别:默认情况下,它不......
  • drf之路由、认证组件
    drf之路由自动生成路由drf由于继承ViewSetMixin类,路由写法变了,原生django+drf,以后的路由写法,可能会有如下情况(三种情况)-path('books/',views.BookView.as_view()-path('books/',views.BookView.as_view({'get':'list','post':'create'}))......
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件
    鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件一、操作环境操作系统: Windows10专业版、IDE:DevEcoStudio3.1、SDK:HarmonyOS3.1二、Row组件沿水平方向布局容器。子组件可以包含子组件。接口Row(value?:{space?:string|number})参数参数名参数类型必填默认值参数......