DRF 过滤排序分页异常处理

本文详细介绍了Django REST Framework(DRF)中的过滤、排序、分页和异常处理。过滤部分涵盖了内置过滤类、第三方过滤以及自定义过滤类的使用方法和源码分析。排序部分讲解了OrderingFilter的用法。分页部分讨论了PageNumberPagination、LimitOffsetPagination和CursorPagination三种方式,并总结了它们的优缺点。异常处理部分则阐述了如何自定义异常处理函数,以及REST framework默认的异常处理流程。
摘要由CSDN通过智能技术生成

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475
目录* DRF 过滤排序分页异常处理
+ 过滤
- 内置过滤类
- 第三方过滤
- 自定义过滤类
- 源码分析
+ 排序
+ 分页
- PageNumberPagination,基本分页
- LimitOffsetPagination,偏移分页
- CursorPagination,游标分页
+ 分页总结
+ 异常
- 自定义异常
- REST framework定义的异常

DRF 过滤排序分页异常处理

DRF-认证权限频率

过滤

涉及到查询数据的接口才需要过滤功能

DRF过滤使用种类:

  1. 内置过滤类
  2. 第三方
  3. 自定义

内置过滤类

导入from rest_framework.filters import SearchFilter

前提条件:使用内置过滤类,视图类需要继承GenericAPIView才能使用

步骤

  1. 视图类内filter_backends中使用SearchFilter
  2. 类属性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

image

第三方过滤

对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值