程序笔记   发布时间:2022-07-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了drf之分页异常处理自动接口文档大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

目录
    @H_874_6@drf之分页异常处理自动接口文档
      @H_874_6@一 分页器(三种)重点如何使用
        @H_874_6@1 关于分页器
          @H_874_6@1.1 内置的三种分页器@H_874_6@1.2 两种分页模式
        @H_874_6@2 GenericAPIView+ListModelmixin的分页模式
          @H_874_6@2.1 PagenumberPagination:普通分页(用的最多)
            @H_874_6@2.1.1 属性@H_874_6@2.1.2 使用方式
          @H_874_6@2 LimitOffsetPagination:偏移分页
            @H_874_6@2.1 属性@H_874_6@2.2 使用方式
          @H_874_6@3 cursorPagination:游标分页(速度块)
            @H_874_6@3.1 属性@H_874_6@3.2 使用方式
        @H_874_6@3 APIView的分页模式
          @H_874_6@3.1 使用方式
      @H_874_6@二 全局异常
        @H_874_6@1 为何使用全局异常@H_874_6@2 使用方式
      @H_874_6@三 封装Response对象
        @H_874_6@1 封装自己的Response对象@H_874_6@2 使用:
      @H_874_6@四 自动生成接口文档

drf之分页异常处理自动接口文档

一 分页器(三种)重点如何使用

1 关于分页器

1.1 内置的三种分页器

1)-PagenumberPagination:普通分页
2)-LimitOffsetPagination:偏移分页
3)-cursorPagination:游标分页

1.2 两种分页模式

1) APIView
2) GenericAPIView+ListModelmixin

2 GenericAPIView+ListModelmixin的分页模式

2.1 PagenumberPagination:普通分页(用的最多)

2.1.1 属性
1)-page_size = api_setTings.PAGE_SIZE  # 每页显示多少条
2)-page_query_param = 'page'           # 查询参数
3)-page_size_query_param = size        # 查询的时候指定每页显示多少条
4)-max_page_size = 10                  # 每页最多显示多少条
2.1.2 使用方式
1)-定义一个类,继承PagenumberPagination
2)-重写四个属性
3)-在继承了GenericAPIView+ListModelmixin视图类中配置
	pagination_class = MyPagenumberPagination
4)-查询
	http://127.0.0.1:8000/students/?page=1&size=5

2 LimitOffsetPagination:偏移分页

2.1 属性
1)-default_limit = api_setTings.PAGE_SIZE  # 默认条数
2)-limit_query_param = 'limit'             # 查询时,指定查询多少条
3)-offset_query_param = 'offset'           # 查询时,指定的起始位置是哪 
4)-max_limit = None                        # 查询时,最多返回多少条
2.2 使用方式
1)-定义一个类,继承LimitOffsetPagination
2)-重写四个属性
3)-在继承了GenericAPIView+ListModelmixin视图类中配置
	pagination_class = MyLimitOffsetPagination
4)-查询
	http://127.0.0.1:8000/students/?limit=100&offset=1

3 cursorPagination:游标分页(速度块)

3.1 属性
1)-cursor_query_param = 'cursor'       # 查询的时候,指定的查询方式
2)-page_size = api_setTings.PAGE_SIZE  # 每页显示多少条
3)-ordering = '-created'               # 排序方式
4)-page_size_query_param = size        # 查询的时候指定每页显示多少条
5)-max_page_size = None                # 每页最多显示多少条
3.2 使用方式
1)-定义一个类,继承cursorPagination
2)-重写五个属性
3)-在继承了GenericAPIView+ListModelmixin视图类中配置
	pagination_class = MycursorPagination
4)-查询
	http://127.0.0.1:8000/students/?cursor=cD0xNQ%3D%3D 

3 APIView的分页模式

3.1 使用方式

1)-新建一个类,继承普通分页,
2)-重写四个属性
3)-视图类写法如下
    class studentApiView(APIView):
        def get(self,request):
            student_list=student.objects.all()
            page=MyPagenumberPagination()  # 实例化得到对象
            # 只需要换不同的自定义分页类即可使用不同的分页器
            res=page.paginate_queryset(student_list,request,self)  # 开始分页
            ser=studentserializer(res, many=TruE)
            return page.get_paginated_response(ser.data) # 返回数据

二 全局异常

1 为何使用全局异常

# 统一接口的返回方式,即便视图函数执行出错。

2 使用方式

1)-写一个函数
    def common_exception_handler(exc, context):
        response = exception_handler(exc, context)
        if response is None:
            response = Response({'code':999,'detail': '未知错误'}, status=status.http_500_INTERNAL_SERVER_ERROR)
        return response
2)-在setTing中配置
    REST_FRAMEWORK = {
        'EXCEPTION_HANDLER':'app01.utils.common_exception_handler'
    }

三 封装Response对象

1 封装自己的Response对象

class APIResponse(ResponsE):
    def __init__(self, code=100, msg='成功', data=None, status=None, headers=None, content_type=None, **kwargs):
        Dic = {'code': code, 'msg': msg}
        if Data:
            Dic['data'] = data

        Dic.update(kwargs)  # 这里使用update
        super().__init__(data=Dic, status=status,
                         template_name=None, headers=headers,
                         exception=false, content_type=content_typE)

2 使用:

	return APIResponse(code=100, msg='查询成功', data=ser.data, count=200, next='http://wwwa.asdfas')

自动生成接口文档

1 自动生成接口文档模块

coreapi,swagger

2 如何使用

1) 在路由中    from rest_framework.documentation import include_docs_urls    path('docs/', include_docs_urls(title='图书管理系统api'))2) 在配置文件中	REST_FRAMEWORK = {    'DEFAULT_scheR_329_11845@A_CLASS':        'rest_framework.scheR_329_11845@as.coreapi.AutoscheR_329_11845@a',	}3) 写视图类(需要加注释)    class BookListCreateView(ListCreateAPIView):        """        get:        返回所有图书信息.        asdfasfda        post:        新建图书.        """        queryset = student.objects.all()        serializer_class = studentserializer4) 只需要在浏览器输入,就可以看到自动生成的接口文档()	http://127.0.0.1:8000/docs/

大佬总结

以上是大佬教程为你收集整理的drf之分页异常处理自动接口文档全部内容,希望文章能够帮你解决drf之分页异常处理自动接口文档所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。