过滤组件
查询所有才涉及到过滤,其他接口都不需要
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写条件,如果配置了多个过滤字段,是或者的条件
采用第三方过滤组件
#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文件,在文件内自定义一个过滤类
暂略