from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination class PublishView(APIView): versioning_class =URLPathVersioning parser_classes =[JSONParser,] def get(self,request,*args,**kwargs): #批量添加 # l1 = [] # for i in range(100): # l1.append(models.Publish(name='%s出版社'%i,city='%s城市'%i)) # models.Publish.objects.bulk_create(l1) #分頁的第一種方式 #查詢出全部數據 ret = models.Publish.objects.all() #實例化產生一個普通分頁對象 page = PageNumberPagination() #手動配置每一頁顯示個數 page.page_size=5 #手動配置路徑上查詢頁的key的名稱 page.page_query_param = 'zyl' #下面兩個是成對的必去一塊兒寫 #手動配飾路徑上顯示最多信息條數的key,好比size=10,若是改爲zyl就是zyl=10 page.page_size_query_param = 'size' #限制每一頁最多顯示的頁數,若是size=100,每一頁顯示的仍是10條 page.max_page_size = 10 #ret是分頁的全部數據,有個返回結果就是分頁以後的數據,是個列表 ret_page = page.paginate_queryset(ret,request,self) #序列化 pub_ser = PublishSerializers(ret_page,many=True) #去settings裏面配置每一頁顯示多少條 # 'PAGE_SIZE':2 #每頁顯示兩條信息 return Response(pub_ser.data)
settings.pyapp
REST_FRAMEWORK = { # 每頁顯示兩條 'PAGE_SIZE':2 }
def get(self,request,*args,**kwargs): #分頁的第二種方式 #查詢出全部數據 ret = models.Publish.objects.all() #實例化產生一個普通分頁對象 page = LimitOffsetPagination() #這裏參數就不同了 #從標杆位置日後取幾個,默認取三個,也能夠指定 page.default_limit = 3 #每次取的條數,能夠自定義key值 page.limit_query_param = 'limit' #標杆值,offset=6 就是在第六個位置日後拿三條 page.offset_query_param = 'offset' #對大取10條 page.max_limit = 10 #ret是分頁的全部數據,有個返回結果就是分頁以後的數據,是個列表 ret_page = page.paginate_queryset(ret,request,self) #序列化 pub_ser = PublishSerializers(ret_page,many=True) #去settings裏面配置每一頁顯示多少條 # 'PAGE_SIZE':2 #每頁顯示兩條信息 return page.get_paginated_response(pub_ser.data) # return Response(pub_ser.data)
這裏會把總條數,上一頁的地址,寫一頁的地址返回給你加密
def get(self,request,*args,**kwargs): #分頁的第三種方式 #查詢出全部數據 ret = models.Publish.objects.all() #實例化產生一個普通分頁對象 page = CursorPagination() #每個顯示的條數 page.page_size = 3 page.cursor_query_param = 'cursor' #按什麼排序 page.ordering='id' #ret是分頁的全部數據,有個返回結果就是分頁以後的數據,是個列表 ret_page = page.paginate_queryset(ret,request,self) #序列化 pub_ser = PublishSerializers(ret_page,many=True) #去settings裏面配置每一頁顯示多少條 # 'PAGE_SIZE':2 #每頁顯示兩條信息 return page.get_paginated_response(pub_ser.data) # return Response(pub_ser.data)
這裏咱們就不知道填什麼了因此就要用到spa
這裏測cursor是加密的。也不能指定哪一頁。rest