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

 

posted @ 2019-03-31 22:06  pyjar  阅读(171)  评论(0编辑  收藏  举报