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

浙公网安备 33010602011771号