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?为什么网址不匹配? –