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

猜你喜欢

转载自www.cnblogs.com/chenxi67/p/10104499.html