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