zoukankan      html  css  js  c++  java
  • DRF的注册器,响应器和分页器

    一、DRF的注册器

    #导入模块
    from rest_framework import routers
    #实例化一个router对象
    router = routers.DefaultRouter()
    #将需要自动生成url的接口注册到router中
    router.register("bookssss",views.BooksssView)
    #生成url
    urlpatterns = [
        re_path(r'^', include('router.urls')),
    ]

    二、响应器

    from rest_framework.renderers import JSONRenderer
    
    
    class BookView(ModelViewSet):
        renderer_classes = [JSONRenderer]
        throttle_classes = [RateThrottle]
        queryset = Book.objects.all()
        serializer_class = BookSerializer

      浏览器再次访问,接收到的就是普通的json格式数据,而不是经过DRF格式化后的数据

    三、分页器

     #导入模块
     from rest_framework.pagination import PageNumberPagination
    #获取数据
     books = Book.objects.all()
     #创建分页器
     paginater = app_paginates.MyPagination()
    #开始分页
     paged_books = paginater.paginate_queryset(books, request)
    #将分页后的数据进行序列化
     serialized_data = BookSerializer1(paged_books, many=True)
    #返回数据
     return Response(serialized_data.data)
    • page_size:用来控制每页显示多少条数据(全局参数名为PAGE_SIZE);
    • page_query_param:用来提供直接访问某页的数据;
    • page_size_query_param:临时调整当前显示多少条数据
    • max_page_size:控制page_size_query_param参数能调整的最大条数

    自定义分页

    class MyPagination(PageNumberPagination):
        page_size = 2
        page_query_param = 'p'
        page_size_query_param = 'size'
        max_page_size = 5
    
    
    class BooksssView(ModelViewSet):
    
        pagination_class = MyPagination
        queryset = Book.objects.all()
        serializer_class = BookSerializer1
  • 相关阅读:
    若没有特殊说明,博文密码都是我的生日
    「考前日志」11.18
    「考前日志」11.17
    洛谷 P2018 消息传递
    「考前日志」11.16
    「考前日志」11.15
    「考前日志」11.14
    2020.11.13 “考试”
    「考前日志」11.13
    AcWing277 饼干
  • 原文地址:https://www.cnblogs.com/chenxi67/p/10104499.html
Copyright © 2011-2022 走看看