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

    简单使用

    总路由

    from django.contrib import admin
    from django.urls import path,include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('api/', include('api.urls')),
    ]

    应用下路由

    from django.urls import path, re_path
    from api import views
    
    urlpatterns = [
        path('books2/', views.BookView.as_view()),   # 继承了ListAPIView
    ]

    views.py

    from api import models
    from api.ser import BookModelSerializer
    # 查所有,才需要分页
    from rest_framework.generics import ListAPIView
    # 内置三种分页方式
    from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination
    '''
    PageNumberPagination
        page_size:每页显示的条数
    '''
    class BookView(ListAPIView):
        queryset = models.Book.objects.all()
        serializer_class = BookModelSerializer
        # 配置分页
        pagination_class = PageNumberPagination

    settings.py

    REST_FRAMEWORK = {
        'PAGE_SIZE': 1,
    }

    自定义分页器

    views.py

    from api import models
    from api.ser import BookModelSerializer
    # 查所有,才需要分页
    from rest_framework.generics import ListAPIView
    # 内置三种分页方式
    from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination
    '''
    PageNumberPagination
        page_size:每页显示的条数
        page_query_param:前端发送的页数关键字名称,(例如:page_query_param='page',查询时http://127.0.0.1:8000/api/books2/?page=2)   
        page_size_query_param='size':前端发送的每页数目关键字名
        max_page_size=5    # 前端最多能设置的每页数量
    '''
    class MyPageNumberPagination(PageNumberPagination):
        page_size = 1
        page_query_param = "aaa"
    
    class BookView(ListAPIView):
        queryset = models.Book.objects.all().filter(is_delete=False)
        serializer_class = BookModelSerializer
        # 配置分页
        pagination_class = MyPageNumberPagination

    如果用APIView分页

    from api import models
    from api.ser import BookModelSerializer
    # 查所有,才需要分页
    from rest_framework.generics import ListAPIView
    # 内置三种分页方式
    from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination
    '''
    PageNumberPagination
        page_size:每页显示的条数
        page_query_param:前端发送的页数关键字名称,(例如:page_query_param='page',查询时http://127.0.0.1:8000/api/books2/?page=2)   
        page_size_query_param='size':前端发送的每页数目关键字名
        max_page_size=5    # 前端最多能设置的每页数量
    '''
    class MyPageNumberPagination(PageNumberPagination):
        page_size = 1
        page_query_param = "aaa"
    
    # class BookView(ListAPIView):
    #     queryset = models.Book.objects.all().filter(is_delete=False)
    #     serializer_class = BookModelSerializer
    #     # 配置分页
    #     pagination_class = MyPageNumberPagination
    
    
    # 如果使用APIView分页
    
    class BookView(APIView):
        def get(self,request,*args,**kwargs):
            book_list=models.Book.objects.all()
            # 实例化得到一个分页器对象
            page_cursor=MyPageNumberPagination()
    
            book_list=page_cursor.paginate_queryset(book_list,request,view=self)
            next_url =page_cursor.get_next_link()
            pr_url=page_cursor.get_previous_link()
            # print(next_url)
            # print(pr_url)
            book_ser=BookModelSerializer(book_list,many=True)
            return page_cursor.get_paginated_response(data=book_ser.data)
  • 相关阅读:
    寄生组合式继承
    原型式继承
    js数学方法应用
    arguments.callee
    date日期比较和格式化方法
    转型函数 Boolean()
    javaScript高程第三版读书笔记
    《JavaScript dom 编程艺术》 placeholder占位符IE8兼容办法。
    正确设置网站title、keywords、description(转载)
    理解RESTful架构
  • 原文地址:https://www.cnblogs.com/baicai37/p/13299362.html
Copyright © 2011-2022 走看看