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

    

猜你喜欢

转载自www.cnblogs.com/lzqrkn/p/10102669.html