过滤组件、排序组件、全局异常处理、自己封装的response对象
  XWVJhDBKEkMp 2023年11月02日 61 0

过滤组件

查询所有才涉及到过滤,其他接口都不需要
restful规范中有一条,请求地址中带过滤条件:分页、排序、过滤统称为过滤

内置过滤类

使用内置过滤类的步骤

from rest_framework.filters import OrderingFilter,SearchFilter
必须是继承GenericAPIView+ListModelMixin的之类视图上,必须是查询所有的视图

1.配置过滤类
    filter_backends=[SearchFilter,]
2.配置过滤类的字段
    search_fields = ['name', ]
3.支持前端的访问形式
    http://127.0.0.1:8000/books/?search=三 # 只要name中或publish中有三都能搜出来

内置过滤类只能通过search写条件,如果配置了多个过滤字段,是或者的条件

image

采用第三方过滤组件

#1 安装:pip3 install django-filter
#2 注册,在app中注册django-filter
#3 全局配,或者局部配
 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',)
#4 视图类(局部配)
from django_filters.rest_framework import DjangoFilterBackend
class BookView(ListAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ('name',)  #配置可以按照哪个字段来过滤,可以跨表过滤,意思是括号里的字段可以是外键字段

自定义过滤器

区间过滤

1.新建一个filters.py文件,在文件内自定义一个过滤类

暂略

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Fnpj8K6xSCR   2024年05月17日   107   0   0 Python
  xKQN3Agd2ZMK   2024年05月17日   75   0   0 Python
  fwjWaDlWXE4h   2024年05月17日   38   0   0 Python
  YpHJ7ITmccOD   2024年05月17日   40   0   0 Python
XWVJhDBKEkMp