gpt4 book ai didi

django - 我如何为 View 集使用限制偏移分页

转载 作者:行者123 更新时间:2023-12-04 03:02:41 25 4
gpt4 key购买 nike

View .py

class CountryViewSet(viewsets.ViewSet):   
serializer_class = CountrySerializer
pagination_class = LimitOffsetPagination
def list(self,request):
try:
country_data = Country.objects.all()
country_serializer = CountrySerializer(country_data,many=True)
return Response(
data = country_serializer.data,
content_type='application/json',
)
except Exception as ex:
return Response(
data={'error': str(ex)},
content_type='application/json',
status=status.HTTP_400_BAD_REQUEST
)

设置.py我已经添加了

'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',

在我的 urls.py 中

router = routers.DefaultRouter(trailing_slash=False)

router.register(r'country', CountryViewSet, base_name='country')
urlpatterns = [
url(r'^', include(router.urls)),
]

当我尝试使用此 URL http://192.168.2.66:8001/v1/voucher/country 时它正在返回所有数据。

但是当我尝试使用此 URL http://192.168.2.66:8001/v1/voucher/country/?limit=2&offset=2

但它返回 404 错误。我是 django 的新手。请帮助我 :)

最佳答案

使用ModelViewSet不是 ViewSet。同时删除您的列表功能,它将自动发送响应。

from rest_framework.pagination import LimitOffsetPagination

class CountryViewSet(viewsets.ModelViewSet):
"""
A simple ViewSet for viewing and editing country.
"""
queryset = Country.objects.all()
serializer_class = CountrySerializer
pagination_class = LimitOffsetPagination

The actions provided by the ModelViewSet class are .list(), .retrieve(), .create(), .update(), .partial_update(), and .destroy().

更新

在你的 settings.py 中

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

更新 2

或者,您可以只使用 paginate_querysetget_paginated_response

def list(self,request):
country_data = Country.objects.all()

page = self.paginate_queryset(country_data)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)

serializer = self.get_serializer(country_data, many=True)
return Response(serializer.data)

Reference: marking-extra-actions-for-routing

关于django - 我如何为 View 集使用限制偏移分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47768882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com