drf-过滤器
https://www.bilibili.com/video/BV1z64y197Dk?p=19&vd_source=caabcbd2a759a67e2a3de8acbaaf08ea
依赖库安装
django-filter==22.1
setting.py
INSTALLED_APPS = [
'django_filters',
]
#全局drf配置
REST_FRAMEWORK={
# 过滤器
'DEFAULT_FILTER_BACKENDS':('django_filters.rest_framework.DjangoFilterBackend',),
}
可以
https://blog.csdn.net/weixin_45373278/article/details/126455879
模糊筛选
http://t.zoukankan.com/telecasterfanclub-p-13290028.html
自定义筛选、筛选区间、模糊匹配啥的
http://t.zoukankan.com/telecasterfanclub-p-13290028.html
筛选、区间筛选
http://t.zoukankan.com/guapitomjoy-p-12002755.html
上面哪些我都没试过1,有空再试试看
--------上面全局设置的我没成功----下面的我成功了
view
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import filters
class BookView(ModelViewSet):
queryset = Member.objects.all()
serializer_class = BookSerializers
filter_backends = (filters.SearchFilter,DjangoFilterBackend,filters.OrderingFilter,) # 指定过滤器
search_fields = ('name','sex',) # 搜索的字段 ?search=123 注意单个字段 要加个,
filterset_fields = ('name',) #指定可搜索的字段 ?name=123
ordering_fields = ("id",) #?ordering=-id
模糊查询见 : https://www.cnblogs.com/elijah-li/p/16128524.html (成功了)
view
//自定义过滤
from rest_framework.filters import BaseFilterBackend
from django.db.models import Q
class Myfilter(BaseFilterBackend):
def filter_queryset(self, request, queryset, view):
# 获取过滤参数
qs_name = request.query_params.get('name')
qs_price = request.query_params.get('price')
# title__contains:精确大小写查询,SQL中-->like BINARY
# 利用Q查询构造或关系
if qs_name:
queryset = queryset.filter(name__contains=qs_name)
elif qs_price:
queryset = queryset.filter(price__contains=qs_price)
elif qs_name or qs_price:
queryset = queryset.filter(Q(name__contains=qs_name) | Q(price__contains=qs_price))
return queryset
//视图类
from app01.filter import Myfilter
class BookViewSet(ViewSetMixin, ListAPIView):
queryset = models.Book.objects
serializer_class = BookModelSerializer
authentication_classes = [LoginAuth, ]
filter_backends = [Myfilter, ] #指定过滤器
filterset_fields = ('name',) # 指定可搜索的字段 ?name=123
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2021-11-01 给按钮加loading效果 等效果
2021-11-01 java 的 try catch
2019-11-01 java.net.NoRouteToHostException: Cannot assign requested address 问题分析(端口被用完的解决方法)
2019-11-01 python读写csv文件的方法(还没试,先记录一下)
2019-11-01 python 判断文件是否存在和删除文件的api (其中判断文件在不在让想起这个可以强兼容jenkins工作目录那个问题)
2017-11-01 关于requests的session方法保持不了cookie的问题。(seesion的意思是保持一个会话,比如 登陆后继续操作(记录身份信息) 而requests是单次请求的请求,身份信息不会被记录)