DRF分页,解析器,跨域。
一:DRF提供的种分页类。
from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination
1:PageNumberPagination,按页数分页,第几页第几条
2:LimitOffsetPagination, 按游标分页。当前第几条,向后查看第几条
3:CursorPagination,加密游标分页,记住上一页和下一页的ID
二:PageNumberPagination 类的使用
1:自定义类
--导入类
--设置部分参数
from rest_framework.pagination import PageNumberPagination class MyPageNumber(PageNumberPagination): page_size = 2 # 每页显示多少条 page_size_query_param = 'size' # URL中每页显示条数的参数 page_query_param = 'page' # URL中页码的参数 max_page_size = None # 最大页码数限制
2:使用
from rest_framework.views import APIView from .models import Book from .serializers import BookSerializers from utils.pages import MyPageNumber class BookView(APIView): def get(self,request): # 需要分页的对象 book_list =Book.objects.all() # 实例化分页器 page_obj = MyPageNumber() #调用分页方法 page_article = page_obj.paginate_queryset(queryset=book_list, request=request, view=self) #序列化分页对象 且返回上一页和下一页的链接。 ret = BookSerializers(page_article, many=True) # print(page_obj.get_paginated_response(ret.data)) return page_obj.get_paginated_response(ret.data)
三:LimitOffsetPagination
1:自定义分页类
from rest_framework.pagination import LimitOffsetPagination class MyPageNumber(LimitOffsetPagination): ''' url :http://127.0.0.1:8088/books/?limit=2&offset=5 ''' default_limit = 3 #默认向后找的条数 默认1 limit_query_param = 'limit' #往后找几条 key (这里设置的和默认值相同) offset_query_param = 'offset' #从第几条数据往后找 max_limit = 999 #最大能找多少条
2:使用和PageNumberPagination相同
四:CursorPagination
1:自定义分页类
from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination class MyPageNumber(CursorPagination): cursor_query_param = 'cursor' page_size = 1 #没有多少条数据 ordering = '-id' #支持按字段排序,id倒序
2:使用方式一样
五:Django解析器和DRF解析器的区别
1:Django解析器
a:解析form表单,存储在request.POST中。
b:可以解析文件,存储在request.FILES中。
c:不能解析json文件,只能通过json手动处理
2:DRF解析器
--可以解析文件,json,form表单数据。数据均存储在request.data中
六:跨域
https://www.cnblogs.com/GGGG-XXXX/articles/9893381.html