95 分页器 解析器 渲染器

主要内容:

1  分页器:   项目在第day91 天的文件夹里:https://www.cnblogs.com/GGGG-XXXX/articles/9867882.html

  a : 分页 DRF提供三种分页方式

    -- ///////?page=1&size=5
    -- ///////?limit=2&offset=3  每页显示两条数据, 从第几个开始
    -- ///////?加密的游标 只有上一页下一下 . 游标只有上一页下一页, 游标的值是加密的, 不暴露数据库的信息

  b : 分页器的使用:

    1 自定义一个分页器类, 配置必要的信息:

from rest_framework import pagination
class Mypagination(pagination.PageNumberPagination):
    # 每页显示两条数据
    page_size = 2
    # 表示第几页
    page_query_param = "page"
    page_size_query_param = "size"
    # 每一页显示的最大条数
    max_page_size = 3

    2 在视图中的使用;

class pageBookView(APIView):
    def get(self, request):
        all_book = Book.objects.all()
        # 先实例化分页器对象
         page_obj = LimitOffsetPaginator()
        # 用自己的分页器调用分页方法,进行分页
        page_data = page_obj.paginate_queryset(all_book, request)
        # 获取分页好的数据
        ser_obj = BookSerializer(page_data, many=True)
        # return Response(ser_obj.data)
        # 给响应添加上一页下一页的连接
        return page_obj.get_paginated_response(ser_obj.data)

2 解析器:https://www.cnblogs.com/GGGG-XXXX/articles/9893090.html

  -- Content-Type 我给你的是什么数据类型
    -- application/x-www-form-urlencoded 表单数据
    -- multipart/form-data 文件的
    -- application/json
      -- request.body
  -- Accept 我能解析的是什么数据类型
  -- Django的解析器

    在request.post中调用
      request.POST Form表单的数据
      request.FILES 文件的数据
  -- DRF解析器

    在request.data 中调用
      -- 拿前端传过来的Content-Type 跟我自己所有的解析器进行匹配
      -- 匹配上了返回这个解析器
      -- 并且调用这个解析器的parse方法 进行解析数据
  -- DRF默认配置的解析器: 有三个:

    from rest_framework import parser

 3 渲染器

  a : 默认的两个渲染器:

     'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',                一个是json提供的
        'rest_framework.renderers.BrowsableAPIRenderer',  一个是浏览器提供的
      ),

  b : 在浏览器上展示的DRF的那个测试页面就是通过浏览器的渲染器做到的, 当然我们也可以通过json数据类型.

    

    

猜你喜欢

转载自www.cnblogs.com/gyh412724/p/10017546.html