分页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',

     

posted @ 2023-04-06 16:51  Hide_凉辰  阅读(35)  评论(0)    收藏  举报