1. 程式人生 > >95 分頁器 解析器 渲染器

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資料型別.