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