zoukankan      html  css  js  c++  java
  • drf分页器

    1 分页器

    # 查所有,才需要分页
    from rest_framework.generics import ListAPIView
    # 内置三种分页方式
    from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination, CursorPagination
    
    '''
    PageNumberPagination
        page_size:每页显示的条数
    '''
    
    
    class MyPageNumberPagination(PageNumberPagination):
        # http://127.0.0.1:8000/api/books2/?aaa=1&size=6
        page_size = 3  # 每页条数
        page_query_param = 'aaa'  # 查询第几页的key(url中)
        page_size_query_param = 'size'  # 每一页显示的条数
        max_page_size = 5
    
    
    class MyLimitOffsetPagination(LimitOffsetPagination):
        default_limit = 3  # 每页条数
        limit_query_param = 'limit'  # 往后拿几条
        offset_query_param = 'offset'  # 标杆
        max_limit = 5  # 每页最大几条
    
    
    class MyCursorPagination(CursorPagination):
        cursor_query_param = 'cursor'  # 每一页查询的key
        page_size = 3  # 每页显示的条数
        ordering = '-id'  # 排序字段
    
    
    class BookPaginationView(ListAPIView):
        queryset = models.Book.objects.all()
        serializer_class = BookModelSerializer
        # 配置分页
        # pagination_class = MyPageNumberPagination
        # pagination_class = MyLimitOffsetPagination
        pagination_class = MyCursorPagination
        
    # 如果使用APIView分页
    from utils.throttling import MyThrottle
    
    
    class BookPaginationAPIView(APIView):
        # 局部配置
        # throttle_classes = [MyThrottle,]
    
        def get(self, request, *args, **kwargs):
            book_list = models.Book.objects.all()
            # 实例化得到一个分页器对象
            page_obj = MyPageNumberPagination()
            book_list = page_obj.paginate_queryset(book_list, request, view=self)
            nex_url = page_obj.get_next_link()
            pr_url = page_obj.get_previous_link()
            print(nex_url)
            print(pr_url)
            book_ser = BookModelSerializer(book_list, many=True)
            return Response(data=book_ser.data)
    
    #settings.py
    REST_FRAMEWORK={
        'PAGE_SIZE': 2,
    }
    
  • 相关阅读:
    linux 免交互状态下修改用户密码
    Sqlmap基础(一)
    cmd命令行指定系统延迟关机时间
    Shell 是个什么玩意
    Linux Shell脚本入门:tee命令
    shell脚本 -d 是目录文件,那么-e,-f等说明
    修改linux终端命令行颜色
    Linux 动画显示
    OpenVAS漏洞扫描基础教程之OpenVAS概述及安装及配置OpenVAS服务
    Curl命令使用
  • 原文地址:https://www.cnblogs.com/h1227/p/13305545.html
Copyright © 2011-2022 走看看