drf 分頁元件

2022-08-22 10:06:08 字數 2670 閱讀 7094

目錄可以達到檢視第幾頁以及每一頁顯示幾條的效果

from rest_framework.pagination import pagenumberpagination

# 一 基本使用:url=url=無效

class pager(apiview):

def get(self,request,*args,**kwargs):

# 獲取所有資料

ret=models.book.objects.all()

# 建立分頁物件

page=pagenumberpagination()

# 在資料庫中獲取分頁的資料

page_list=page.paginate_queryset(ret,request,view=self)

# 對分頁進行序列化

ser=bookserializer1(instance=page_list,many=true)

return response(ser.data)

# 二 自定製 url=

# size=30,無效,最多5條

class mypage(pagenumberpagination):

page_size = 2

page_query_param = 'page'

# 定製傳參

page_size_query_param = 'size'

# 最大一頁的資料

max_page_size = 5

class page(apiview):

def get(self,request,*args,**kwargs):

# 獲取所有資料

ret=models.book.objects.all()

# 建立分頁物件

page=mypage()

# 在資料庫中獲取分頁的資料

page_list=page.paginate_queryset(ret,request,view=self)

# 對分頁進行序列化

ser=bookserializer1(instance=page_list,many=true)

# return response(ser.data)

return page.get_paginated_response(ser.data)

settings.py中配置

rest_framework =
路由:urls.py

url(r'^page/$', views.page.as_view()),
序列化 serializers

class bookserializer1(serializers.modelserializer):

class meta:

model=models.book

# fields="__all__"

exclude=('authors',)

效果:在第n個位置,向後檢視n條資料

# url: 

from rest_framework.pagination import limitoffsetpagination

# 也可以自定製,同簡單分頁

class page(apiview):

def get(self,request,*args,**kwargs):

# 獲取所有資料

ret=models.book.objects.all()

# 建立分頁物件

page=limitoffsetpagination()

# 在資料庫中獲取分頁的資料

page_list=page.paginate_queryset(ret,request,view=self)

# 對分頁進行序列化

ser=bookserializer1(instance=page_list,many=true)

# return page.get_paginated_response(ser.data)

return response(ser.data)

from rest_framework.pagination import cursorpagination

# 看原始碼,是通過sql查詢,大於id和小於id

class pager(apiview):

def get(self,request,*args,**kwargs):

# 獲取所有資料

ret=models.book.objects.all()

# 建立分頁物件

page=cursorpagination()

page.ordering='nid'

# 在資料庫中獲取分頁的資料

page_list=page.paginate_queryset(ret,request,view=self)

# 對分頁進行序列化

ser=bookserializer1(instance=page_list,many=true)

# 可以避免頁碼被猜到

return page.get_paginated_response(ser.data)

DRF之分頁元件

rest framework提供了分頁的支援。我們可以在配置檔案中設定全域性的分頁方式,如 rest framework 也可通過自定義pagination類,來為檢視新增不同分頁行為。在檢視中通過pagination class屬性來指明。class largeresultssetpaginati...

drf 分頁 例項

from rest framework import serializers class studentserializers serializers.modelserializer class meta model students 設定關聯模型 model就是關聯模型 fields all fi...

DRF過濾元件

from rest framework import pagination 基礎分頁 class pagenumberpagination pagination.pagenumberpagination 預設一頁顯示的條數 page size 2 查詢頁面的關鍵字 page query param ...