继承APIView类的视图中添加分页
class AuthorsView(APIView): def get(self,request): '''分页展现做者列表''' author_list = models.Author.objects.all() # 分页 # 实例化一个本身定义的MyPageNumberPagination对象 pnp = MyPageNumberPagination() # 调用paginate_queryset方法来生成新的author_list # 参数分别为,author_list,request以及当前的视图 page_author_list = pnp.paginate_queryset(author_list,request,self) # 在将新生成的page_author_list序列化 auts = serializer.AuthorModelSerializers(page_author_list,many=True) return Response(auts.data)

class BaseResponse(object): def __init__(self,code=1000,data=None,error=None): self.code=code self.data=data self.error=error class IndexView(APIView): def get(self,request,*args,**kwargs): ret=BaseResponse() try: user_list=models.UserInfo.objects.all()#找到全部的数据项 p1 = P1()#实例化分页器, page_user_list=p1.paginate_queryset(queryset=user_list,request=request,view=self)#把数据放在分页器上面 ser=IndexSerializer(instance=page_user_list,many=True)#序列化数据 ret.data=ser.data ret.next=p1.get_next_link() except Exception as e: ret.code=1001 ret.error='xxxx错误'
继承ModelViewSet类的视图中添加分页
若是咱们的视图继承了ModelViewSet类,那么如需分页的时候,只须要在视图类中加入配置参数便可,以下:
1
|
pagination_class
=
MyPageNumberPagination
|
注意:
一、MyPageNumberPagination类是咱们本身定义的类,见上面一个示例。
二、pagination_class后面直接跟上类名便可,无需加列表(由于分页不想其余组件,分页只可能有一个)
全局配置分页属性
只须要在REST_FRAMEWORK配置中加入 配置属性的键值对便可,以下:
1
2
3
4
|
REST_FRAMEWORK
=
{
.....
"PAGE_SIZE"
:
1
}
|