在Django Rest Framework中对ViewSet返回的列表进行分页

奥斯卡·珀森(Oskar Persson)

ViewSet用这样的重写list方法创建了一个

from rest_framework.response import Response
from rest_framework import viewsets

class MyViewSet(views.ViewSet):

    def list(self, request):
        return Response([
            {"id": 1},
            {"id": 2},
        ])

我如何对这个回应进行分页?

settings.py我有以下设置:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'LinkHeaderPagination',
    'PAGE_SIZE': 10
}

并且LinkHeaderPagination是这样构建的:

from rest_framework import pagination
from rest_framework.response import Response

class LinkHeaderPagination(pagination.PageNumberPagination):
    page_size_query_param = 'page_size'

    def get_paginated_response(self, data):
        next_url = self.get_next_link()
        previous_url = self.get_previous_link()

        if next_url is not None and previous_url is not None:
            link = '<{next_url}>; rel="next", <{previous_url}>; rel="prev"'
        elif next_url is not None:
            link = '<{next_url}>; rel="next"'
        elif previous_url is not None:
            link = '<{previous_url}>; rel="prev"'
        else:
            link = ''

        link = link.format(next_url=next_url, previous_url=previous_url)
        headers = {'Link': link, 'Count': self.page.paginator.count} if link else {}

        return Response(data, headers=headers)

这个伟大的工程用ModelViewSets,因为他们有一个特定的查询集,但我怎么分页列表?

萨多尔贝克·伊莫马里耶夫

您只需要get_paginated_reponse在paginator上调用method即可,而不是返回Response如果仅是单个视图集

class MyViewSet(views.ViewSet):
    def list(self, request):
        data = [
            {"id": 1},
            {"id": 2},
        ]
        paginator = LinkHeaderPagination()
        page = paginator.paginate_queryset(data, request)
        if page is not None:
            return paginator.get_paginated_response(page)

        return Response(data)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django rest ViewSet中的覆盖列表方法

来自分类Dev

如何在Django-Rest-Framework ViewSet中获取自定义列表视图

来自分类Dev

Django Rest Framework中的Viewset'create'自定义赋值

来自分类Dev

Django REST ViewSet创建

来自分类Dev

Django Rest-Framework Singleton ViewSet

来自分类Dev

Django Rest Framework Viewset的HTTP方法

来自分类Dev

django rest 中的分页,ListAPIView

来自分类Dev

如何在Django Rest Framework中动态设置分页?

来自分类Dev

关闭Django Rest Framework ModelViewSet的自动分页

来自分类Dev

自以来的Django Rest Framework分页

来自分类Dev

Django Rest Framework的分页比页面大小少

来自分类Dev

用Django REST Framework ViewSet表示多个对象/列表CRUD操作

来自分类Dev

Django Rest Framework and JSONField

来自分类Dev

Django Rest Framework API

来自分类Dev

Django Rest Framework的ModuleNotFoundError

来自分类常见问题

将请求上下文从Django Rest Framework中的Viewset传递给序列化器

来自分类Dev

django-rest-framework:在ViewSet更新方法中添加其他权限

来自分类Dev

Django Rest Framework单元测试Viewset Mixins

来自分类Dev

Django Rest Framework ViewSet方法的Permission_classes

来自分类Dev

Django Rest Framework-在ViewSet和Serializer上创建方法

来自分类Dev

Django Rest Framework:使用URL参数发布到Viewset

来自分类Dev

Django Rest框架Viewset权限“创建”而不“列表”

来自分类Dev

django-rest分页与angularjs

来自分类Dev

Django-rest分页与angularjs

来自分类Dev

包括Django REST Framework网址返回404

来自分类Dev

Django Rest Framework,在POST上返回405

来自分类Dev

Django Rest Framework返回单个值

来自分类Dev

Django Rest Framework返回空JSON

来自分类Dev

在Django Rest Framework中返回图片网址

Related 相关文章

热门标签

归档