drf----分页
其他
2019-11-23 16:17:29
阅读次数: 0
1,配置
2,url
from django.conf.urls import url
from django.contrib import admin
from API import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^new/article/$', views.NewArticleView.as_view(),),
url(r'^new/article/(?P<pk>\d+)/$', views.NewArticleView.as_view(),),
url(r'^page/article/$', views.PageArticleView.as_view(), ),
]
3,字段处理
4,视图
class PageArticleView(APIView):
def get(self, request, *args, **kwargs):
queryset = models.Article.objects.all()
# 方式一 仅数据
"""
# 调用分页对象.paginate_queryset方法进行分页,得到的结果是分页之 后的数据
page_obj = PageNumberPagination()
# result就是分页玩的一部分数据
result = page_obj.paginate_queryset(queryset, request, self)
# 序列化分页之后的数据
ser = serializer.PageArticleSerializer(instance=result, many=True)
return Response(ser.data)
"""
# 方式二 数据+分页信息
"""
page_obj = PageNumberPagination()
result = page_obj.paginate_queryset(queryset, request, self)
ser = serializer.PageArticleSerializer(instance=result, many=True)
return page_obj.get_paginated_response(ser.data)
"""
# 方式三 数据加部分分页信息,Response({可定制})
page_obj = PageNumberPagination()
result = page_obj.paginate_queryset(queryset, request, self)
ser = serializer.PageArticleSerializer(instance=result, many=True)
return Response({
"count": page_obj.page.paginator.count,
"result": ser.data
})
from rest_framework.pagination import PageNumberPagination
from rest_framework.pagination import LimitOffsetPagination
from rest_framework import serializers
class PageArticleSerializer(serializers.ModelSerializer):
class Meta:
model = models.Article
fields = "__all__"
class HulaLimitOffsetPagination(LimitOffsetPagination):
max_limit = 2
class PageArticleView(APIView):
def get(self, request, *args, **kwargs):
queryset = models.Article.objects.all()
page_object = HulaLimitOffsetPagination()
result = page_object.paginate_queryset(queryset, request, self)
ser = PageArticleSerializer(instance=result, many=True)
return Response(ser.data)
转载自www.cnblogs.com/daviddd/p/11918368.html