分页Pagination 异常Exceptions
- 分页全局配置
# 分页组件全局配置 # 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', # 'PAGE_SIZE': 5,
- 自定义分页组件使用
- 自写分页组件类
-
from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination class MyPagination(PageNumberPagination): """自定义分页器""" # 我们指定的默认单页数据量(我们不指定默认是100) page_size = 3 # 提供自选单页数据量 # http://127.0.0.1:8181/students/sp/?size=2 page_size_query_param = "size" # 重命名路由查询时的分页大小属性 max_page_size = 100 class MyLimit(LimitOffsetPagination): """自定义偏移量分页器""" # 单页数据量 default_limit = 10 max_limit = 50 # 默认偏移量为2,即从第2条数据查询开始(版本较高已经删除使用了) # default_offset = 2 # offset_query_param = "offset" # 重命名路由查询时的偏移量属性名 limit_query_param = "limit" # 重命名路由查询时的单页数据量属性名
- 视图使用(偏移量分页类不能和分页类同时使用,若强行使用需要修改自定义分页器中方法)
-
class StudentModelViewSetPage(ModelViewSet): queryset = Student.objects.all() # 指定视图操作的层级为所有数据 serializer_class = StudentModelSerializers # 指定序列化器 from FRAMEWORK.MyPagination import MyPagination,MyLimit # 导入分页类,偏移量分页类 pagination_class = MyPagination
- Exceptions异常配置
- 一般在主应用下建立exceptions.py文件编写自定义异常类
-
from rest_framework import status from rest_framework.views import exception_handler from rest_framework.response import Response """ 一般针对于数据库使用,第三方接口会写自定义异常 """ def self_exception_handler(exc, context): """ :param exc:异常示例对象 :param context:字典,异常发生时的解释器收集的上下文环境(变量函数类对象等) :return:将返回提示信息 """ # drf先做处理 response = exception_handler(exc, context) if response is None: if isinstance(exc, ZeroDivisionError): return Response({"detail": "0不能做除数!"} ,status=status.HTTP_500_INTERNAL_SERVER_ERROR)
- settings中配置:
-
#异常配置 'EXCEPTION_HANDLER': 'Restful_api.exceptions.self_exception_handler',
浙公网安备 33010602011771号