rest-framework查詢時候默認(rèn)是不分頁的, 除了手動計算查詢的起始位置之外, rest-framework也提供了一些頁碼的設(shè)置功能.
- 方式1: 直接在setting里添加配置
在settings中rfw(rest-framework)的所有設(shè)置都在REST_FRAMEWORK
字典中,(如果不設(shè)置將采用rfw的默認(rèn)設(shè)置, 默認(rèn)設(shè)置存放在rest-framework.settings
中, 可以在此處查詢設(shè)置的字段名, 防止拼寫錯誤), 我們修改項目目錄下的settings.py
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE': 10 # 這是每頁顯示的數(shù)目
}
完畢
此時通過restframe查詢之時, 將以每頁十條數(shù)據(jù)顯示. 這種方式及其簡單, 但是無法對url的頁碼參數(shù)進行’個性化’定制
- 方式2: 自定義分頁(類):
自定義類需要重寫PageNumberPagination
, 可以自定義多個參數(shù)
from rest_framework.pagination import PageNumberPagination
class StandardResultsSetPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'size'
page_query_param = 'p'
max_page_size = 100
重寫后只需在類視圖中指定即可
class GoodsListView(mixins.ListModelMixin, viewsets.GenericViewSet):
"""
goods list
"""
...
pagination_class = StandardResultsSetPagination
此時的url變?yōu)?
http://localhost:8000/books/?p=3&page_size=3