繼承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
}
|