zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    【引用】关于closeonexec标志
    CentOS解决编码问题
    /etc/init.d/functions (转)
    centos 安装 中文 支持 语言包(转)
    vsftpd 530 错误
    __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程)(转)
    C语言中可变参数的用法 va_start va_end(转)
    守护进程 setsid(转)
    /dev/null 重定向 ./sh >/dev/null 2>&1
    C# 子类调用父类构造函数
  • 原文地址:https://www.cnblogs.com/yingjp/p/10633542.html
Copyright © 2011-2022 走看看