欢迎访问宙启技术站
智能推送

DjangoRestFramework中关于PAGE_SIZE的设置方法

发布时间:2023-12-24 20:21:43

在Django Rest Framework中,可以通过设置PAGE_SIZE来控制每页返回的数据量。PAGE_SIZE是一个全局设置,可以在项目的settings.py文件中进行配置。

首先,打开settings.py文件,找到REST_FRAMEWORK配置项。如果没有,可以自行添加如下代码:

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

在上述代码中,DEFAULT_PAGINATION_CLASS指定了使用的分页类,可以选择使用PageNumberPaginationLimitOffsetPaginationCursorPagination等。这里我们选择了PageNumberPagination,这是DRF中默认的分页类。

接下来,我们将PAGE_SIZE设置为10,表示每页返回10条数据。

假设我们编写了一个视图集FooViewSet,通过继承ModelViewSet类来实现:

from rest_framework.viewsets import ModelViewSet
from .models import Foo
from .serializers import FooSerializer

class FooViewSet(ModelViewSet):
    queryset = Foo.objects.all()
    serializer_class = FooSerializer

这样,我们已经完成了对这个视图集的基本配置。接下来,我们需要对这个视图集进行分页设置。

我们可以在视图集中使用pagination_class属性来设置该视图使用的分页类,如下所示:

from rest_framework.pagination import PageNumberPagination

class CustomPagination(PageNumberPagination):
    page_size = 20
    page_size_query_param = 'page_size'
    max_page_size = 100

class FooViewSet(ModelViewSet):
    queryset = Foo.objects.all()
    serializer_class = FooSerializer
    pagination_class = CustomPagination

在上述代码中,我们定义了一个名为CustomPagination的自定义分页类,并设置page_size为20,表示每页返回20条数据。此外,page_size_query_param用于指定URL中携带的每页数据量的参数名称,默认是'page_size'max_page_size用于限制每页数据量的最大值,这里设置为100。

通过这种方式,在FooViewSet使用自定义的分页类后,可以覆盖全局设置中的PAGE_SIZE,实现对该视图集的定制化分页。

从而,当我们访问这个视图集的API时,可以通过URL参数指定每页数据量,例如:

http://localhost:8000/api/foos/?page=1&page_size=5

上述URL表示获取 页的数据,并限制每页返回5条记录。

以上是关于在Django Rest Framework中设置PAGE_SIZE的方法及使用例子的说明,通过配置全局设置和使用自定义分页类,可以方便地控制每页返回的数据量。