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数据类型.