我的settings.py
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休息框架&#39; pagination docs:
只有在您使用通用视图或视图集时,才会自动执行分页。如果您使用的是常规APIView,则需要自行调用分页API以确保返回分页响应。有关示例,请参阅mixins.ListModelMixin和generics.GenericAPIView类的源代码。
我已在这里使用通用视图,那为什么这不起作用?
答案 0 :(得分:1)
来自LimitOffsetPagination
的说明:
此分页样式反映了查找多个数据库记录时使用的语法。客户包括&#34;限制&#34;和#34;偏移&#34;查询参数。限制表示要返回的最大项目数,相当于其他样式中的page_size。偏移量表示查询相对于整套未标记项目的起始位置。
因此,如果您想使用limit
,则需要将offset
和LimitOffsetPagination
作为GET参数传递:https://api.example.org/accounts/?limit=100&offset=400
或者您可以改为使用PageNumberPagination
:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 100
}
答案 1 :(得分:1)
除了来自@neverwalkaloner的有用建议外,我仍然看到404
错误。我原来这是由于网址错误
我必须从
更改我的网址定义url(r'^dashboard/users$', views.UserList.as_view())
到
url(r'^dashboard/users/$', views.UserList.as_view())
尾随
/
做了伎俩