Django-REST-fram中JSON字段的分页

2024-06-02 10:59:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在最新的Django REST框架中添加分页, 我怎样才能在tracks字段内提供分页,因为tracks可以超过1-2k?在

{
    'album_name': 'The Grey Album',
    'artist': 'Danger Mouse'
    'tracks': [
               {'title': 'Public Service Announcement'},
               {'title': 'What More Can I Say'},
               {'title': 'Encore'},
               ............ 1k
              ],
}

Tags: thedjangoname框架restalbumtitleartist
1条回答
网友
1楼 · 发布于 2024-06-02 10:59:44

希望您使用的是viewset,但是没有它它也可以工作。如果你对视图集不了解,可以在这里阅读:http://www.django-rest-framework.org/api-guide/viewsets/

在视图.py在

from django.core.paginator import Paginator
...
class AlbumViewSet(viewsets.ModelViewSet):
queryset = Album.objects.all()
serializer_class = AlbumSerializer

@detail_route()
def tracks(self, request, pk, page):

    # if you want to use url: albums/<album_id>/tracks/page/
    track_set = Tracks.objects.get(album_id=int(pk))

    # elif you want to use url: albums/<album_name>/tracks/page/
    track_set = Tracks.objects.get(album_album_name=pk)

    paginator = Paginator(track_set, page_size) # ! change page_size to yours
    serializer = TrackSerializer(paginator.page(page), many=True, context={'request': request})
    return Response(serializer.data)

在网址.py. 如果你不使用路由器,读dock并用ViewSet而不是ClassView使用它们,但是没有它们也可以工作。(路由器:http://www.django-rest-framework.org/api-guide/routers/

^{pr2}$

现在您可以获取这样的url:albums/my_name_is_jeff/tracks/1或albums/5/tracks/1。除了“小路由器示例”之外,所有代码都是必需的,是的,在简单的基于类的视图中使用它是愚蠢的

相关问题 更多 >