Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
目录* DRF 过滤排序分页异常处理
+ 过滤
- 内置过滤类
- 第三方过滤
- 自定义过滤类
- 源码分析
+ 排序
+ 分页
- PageNumberPagination,基本分页
- LimitOffsetPagination,偏移分页
- CursorPagination,游标分页
+ 分页总结
+ 异常
- 自定义异常
- REST framework定义的异常
DRF 过滤排序分页异常处理
过滤
涉及到查询数据的接口才需要过滤功能
DRF过滤使用种类:
- 内置过滤类
- 第三方
- 自定义
内置过滤类
导入:from rest_framework.filters import SearchFilter
前提条件:使用内置过滤类,视图类需要继承GenericAPIView才能使用
步骤:
- 视图类内filter_backends中使用SearchFilter
- 类属性search_fields指定过滤的字段
使用:链接?search=字段,且支持模糊查询
from rest_framework.generics import ListAPIView
from rest_framework.viewsets import ViewSetMixin
from rest_framework.filters import SearchFilter
from .models import Book
from .serializer import BookSerializer
# 只有查询接口才需要过滤,内置过滤类的使用需要视图类继承GenericAPIView才能使用
class BookView(ViewSetMixin, ListAPIView):
'''
内置过滤类:1、filter\_backends中使用SearchFilter
2、类属性search\_fields指定过滤的字段
3、链接?search=字段,且支持模糊查询
'''
queryset = Book.objects.all()
serializer_class = BookSerializer
filter_backends = [SearchFilter,]
# 过滤单个字段
search_fields = ['title',]
注意:链接过滤的字段必须是search
# 过滤多个字段:书名和作者名
'''
比如书名:Python 作者名:Pink,那么过滤search=P就都会过滤出来
'''
search_fields = ['title','author']
# http://127.0.0.1:8000/books/?search=H
总结:
- 内置过滤类的使用,模糊查询会将包含过滤字段的数据都过滤出来,前提是在search_fields列表内指定的字段;
- 内置过滤的特点是模糊查询
- 过滤字段参数为
search
第三方过滤
对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fi