【问题标题】:How to implement pagination in Django如何在 Django 中实现分页
【发布时间】:2021-11-25 08:49:24
【问题描述】:

我想在我的自定义 jsonresponse 函数中实现分页。但我不知道我将如何实现这一点。这是我的函数的代码。任何输入都会有很大帮助。谢谢。

def json_response(data = {}, message = 'successful!', status = 'success', code = 200):
    
    data_set = {}
    status = 'success' if code == 200 else 'error' 
    if status == 'success':

        data_set['code'] = code
        data_set['status'] = status
        data_set['message'] = message

        # data_set['data'] = data.data
        try:
            data_set['data'] = data.data
        except TypeError:
            data_set['data'] = json.dumps(data)
        except AttributeError:
            data_set['data'] = data
        
    else:
        
        data_set['code'] = code 
        data_set['status'] = status
        data_set['message'] = message

    return JsonResponse(data_set, safe=False, status=code)

【问题讨论】:

  • 您似乎没有对象列表。分页适用于返回列表的“部分”。

标签: python django pagination


【解决方案1】:

如果您使用的是 Django Rest 框架,请查看框架提供的分页

https://www.django-rest-framework.org/api-guide/pagination/

例子:

# pagination.py

from rest_framework.pagination import PageNumberPagination

class CustomNumberPagination(PageNumberPagination):
    page_size = 10 # Put the number of items you desire

# views.py

from somewhere.pagination import CustomNumberPagination
from somewhere.model import SomeModel
from somewhere.serializer import SomeSerializer
from rest_framework.generics import ListAPIView

class SomeView(generics.ListAPIView):
    queryset = SomeModel.objects.all()
    serializer_class = SomeSerializer
    pagination_class = CustomNumberPagination


附:也可以像下面这样全局配置

# settings.py

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10, # Put the number of items you desire 
}

【讨论】:

    猜你喜欢
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2017-03-07
    • 2021-07-11
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多