0

工作在我settings.pyDjango的REST框架全球分頁不ListCreateAPIView

REST_FRAMEWORK = { 
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination', 
    'PAGE_SIZE': 50 
     } 

urls.py

url(r'^dashboard/users$', views.UserList.as_view()), 

和視圖本身我有以下

class UserList(generics.ListCreateAPIView): 
    queryset = User.objects.all() 
    serializer_class = UserSerializer 

當我嘗試訪問/dashboard/users/?page=1我得到一個404 error與在調試模式以下網址:

^dashboard/users$ 
^dashboard/users\.(?P<format>[a-z0-9]+)/?$ 

根據Django的休息框架的pagination docs:如果你使用的是通用的看法或viewsets

分頁只自動執行。如果您使用的是常規APIView,則需要自己調用分頁API以確保返回分頁響應。示例請參閱mixins.ListModelMixin和generics.GenericAPIView類的源代碼。

我已經在這裏使用泛型視圖,那麼爲什麼這不工作?

+0

你沒有在'settings.py'中設置PAGE_SIZE' – zaidfazil

+0

我已經在代碼中設置了'PAGE_SIZE',雖然粘貼它得到了左邊,我已經更新了問題 –

回答

1

除了有益的建議,從@ neverwalkaloner,我仍然看到一個404錯誤。我原來就是是由於URL missmatch

我有我的網址定義從

url(r'^dashboard/users$', views.UserList.as_view()) 

改變

url(r'^dashboard/users/$', views.UserList.as_view()) 

尾隨/的伎倆

1

LimitOffsetPagination描述:

這個分頁樣式反映查找多個數據庫記錄時使用的語法。客戶端包含「限制」和「偏移量」查詢參數。該限制表示要返回的項目的最大數量,並且等同於其他樣式中的page_size。偏移量指示查詢的起始位置與完整的未分類項目集的關係。

所以你需要通過limitoffset如GET參數,如果你想使用LimitOffsetPaginationhttps://api.example.org/accounts/?limit=100&offset=400

或者你可以使用PageNumberPagination代替:

REST_FRAMEWORK = { 
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 
'PAGE_SIZE': 100 
} 
+0

瞭解,但即使進行所需的更改後,我看到一個404錯誤。我需要傳遞什麼特殊的URL conf?爲什麼網址不匹配? –