zoukankan      html  css  js  c++  java
  • DRF之注册响应分页组件

    注册器

      注册器的作用就是以后我们不用自己手动的一条条的敲路径了,它可以帮助哦们直接去找对应的路由,不用传参了,知道这一点就可以了,不多说还是,上代码实例

      

    第一步:导入模块
    from django.urls import re_path,include
    from rest_framework import routers
    第二步:实例化一个router对象 router
    = DefaultRouter()
    第三步:将需要自动生成url的接口注册到router中 router.register(r
    'books', views.BookView) 第四步:生成url urlpatterns = [ re_path(r'^', include('router.urls')), ]
    #这样,就相当于我们前几天写的各种get,post,put...请求的路由了

    响应

      其实,刚接触响应器的时候我也搞不清楚这个响应器有什么用,毕竟它太简单了,刚开始接触就是响应json数据嘛,经过一段时间的反复思考,得到了一个结论,这其中包含了各种看源码之类的复杂且幔帐的过程,奥,原来我们使用DRF的Response类来将数据响应给客户端,不管是POSTMAN还是浏览器,都能浏览到经过格式化后的漂亮的数据,DRF是怎么做的呢?其实就是通过响应器组件,现在知道了嘛?

    分页器

      分页器,可以说开发环境中用得比较多一些的作用,django中给我们封装了分页功能,不过过程中有些繁琐,需要我们写一些代码,但是DRF中分页,可以说是简单的版本,咱们可以对比一些

      

    第一步:导入模块
    
    from rest_framework.pagination import PageNumberPagination
    第二步:获取数据
    
    books = Book.objects.all()
    第三步:创建分页器
    
    paginater = PageNumberPagination()
    第四步:开始分页

    paged_books = paginater.paginate_queryset(books, request)
    第五步:将分页后的数据进行序列化
    
    serialized_data = BookSerializer(paged_books, many=True)
    第六步:返回数据
    
    return Response(serialized_data.data)




    #我们的主要逻辑
    
    from rest_framework.pagination import PageNumberPagination
    
    
    class MyPagination(PageNumberPagination):
        page_size = 3
        page_query_param = 'page'
        page_size_query_param = 'size'
        max_page_size = 5
    
    #page_size:用来控制每页显示多少条数据(全局参数名为#PAGE_SIZE);
    #page_query_param:用来提供直接访问某页的数据;
    #page_size_query_param:临时调整当前显示多少条数据
    #max_page_size:控制page_size_query_param参数能调整的最大条数

      现在,经过导入把分页类在我们BookView中指定

        

    class BookView(ModelViewSet):
        # 第二步:指定认证类
        pagination_class = app_paginates.MyPagination
    
        queryset = Book.objects.all()
        serializer_class = BookSerializer

        

  • 相关阅读:
    一个纠结的问题
    打开SQL Developer时,提示缺少快捷方式
    打开eclipse时,An error has occurred. See the log file
    bash: id : command not found
    Fatal error: Call to undefined function: mysql_connect()解决方法
    struts.xml中标签自动提示问题
    Hibernate向Oracle中添加自增字段
    linux 忘记root密码的解决办法
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
    Ctrl+Alt+Fn不能切换到字符界面
  • 原文地址:https://www.cnblogs.com/lzqrkn/p/10102669.html
Copyright © 2011-2022 走看看