django drf 过滤器

news/2024/9/29 4:46:16/

排序

代码:

python">from rest_framework.generics import ListAPIView
from rest_framework.filters import OrderingFilterclass TestListAPIView(ListAPIView):queryset = models.Course.objects.filter(is_delete=False).all()serializer_class = serializers.TestModelSerializer# 配置过滤器类filter_backends = [OrderingFilter,]# 参与排序的字段: ordering=-score, idordering_fields = ['id', 'score']

前端请求:

http://127.0.0.1:8000/api/test?ordering=-score,id

群查搜索过滤器

代码:

python">from rest_framework.generics import ListAPIView
# SearchFilter搜索过滤器
from rest_framework.filters import SearchFilterclass TestListAPIView(ListAPIView):queryset = models.Course.objects.filter(is_delete=False).all()serializer_class = serializers.FreeCourseModelSerializer# 配置搜索过滤器类filter_backends = [SearchFilter]# 参与搜索的字段: search = liuliuliu (意思是name、status、create_by字段中带liuliuliu就可以了)search_fields = ['name', 'status', 'create_by']

前端请求:

http://127.0.0.1:8000/api/test?search=liuliuliu

自定义过滤器

自定义过滤器代码:

python">from rest_framework.filters import BaseFilterBackendclass MyFilter(BaseFilterBackend):def filter_queryset(self, request, queryset, view):# 例如:获取前端想要的数据条数limit = request.query_params.get('limit')try:return queryset[:int(limit)]except:return queryset

视图代码:

python">from rest_framework.generics import ListAPIView
from rest_framework.filters import OrderingFilterclass TestListAPIView(ListAPIView):queryset = models.Course.objects.filter(is_delete=False).all()serializer_class = serializers.FreeCourseModelSerializer# 配置过滤器类, 自定义过滤器类可与自带的共用filter_backends = [OrderingFilter, MyFilter]  # MyFilter为自定义过滤器# 参与排序的字段: ordering=-score,idordering_fields = ['id', 'score']

前端请求:

http://127.0.0.1:8000/api/test?limit=5


http://www.ppmy.cn/news/1531773.html

相关文章

Apache APISIX学习(2):安装Grafana、prometheus

一、Grafana安装 1、介绍 Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测 (System Monitoring) 工具。它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视化仪表。同时它…

通过docker启动ElasticSearch后为ElasticSearch设置用户和密码

文章目录 0. 前言1. 没有设置用户名和密码的情况2. 为ElasticSearch设置用户名和密码2.1 进入 ElasticSearch 容器内部2.2 修改 ElasticSearch 的配置文件2.3 设置用户名和密码 3. 在 kibana 容器中指定访问 ElasticSearch 的用户名和密码4. 设置用户名和密码后的情况4.1 访问 …

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-25

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-25 1. PromSec: Prompt Optimization for Secure Generation of Functional Source Code with Large Language Models (LLMs) M Nazzal, I Khalil, A Khreishah, NH Phan - arXiv preprint arXiv:2409.12699, 2…

【RabbitMQ】应用问题

RabbitMQ 应用问题 1. 幂等性保障1.1 幂等性介绍1.2 解决⽅案全局唯⼀ID业务逻辑判断 2. 顺序性保障2.1 顺序性保障介绍2.2 顺序性保障⽅案 3. 消息积压问题3.1 原因分析3.2 解决⽅案 1. 幂等性保障 1.1 幂等性介绍 幂等性是数学和计算机科学中某些运算的性质, 它们可以被多次…

解决Windows远程桌面 “为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多,请稍后片刻再重试,或与系统管理员或技术支持联系“问题

根本原因就是当前主机被通过远程桌面输入了过多的错误密码,被系统锁定。这种情况多数是你的服务器远程桌面被人试图攻击了,不建议取消系统锁定策略。如果阿里云或者腾讯云主机,只需要在管理后台通过管理终端或者VNC登陆一次,锁定即…

软件测试学习路线图

软件测试工程师是专门从事软件、系统或产品测试和评估的技术专业人士,确保它们符合既定标准并无任何缺陷。通过精心设计和执行测试计划,软件测试工程师发现 Bug、故障和需要改进的领域,从而提高最终产品的可靠性和性能。 软件测试工程师在软…

多级侧边菜单(递归)

需要编写两个文件 aside-menu.vue 和 menu-item.vue menu-item.vue <script setup> defineOptions({name: MenuItem}) defineProps({menuList: Array}) </script><template><template v-for"menu of menuList"><!-- 如果当前有子菜单&a…

onload_tcpdump命令抓包报错Onload stack [7,] already has tcpdump process

最近碰到Onload 不支持同时运行多个 tcpdump 进程的报错&#xff0c;实际上使用了ps查询当时系统中并没有tcpdump相关进程存在。需要重启服务器本机使用onload加速的相关进程后才能使用onload_tcpdump正常抓包&#xff0c;很奇怪&#xff0c;之前确实没遇到这样的问题&#xff…