DjangoRestFramework中关于PAGE_SIZE的设置方法
在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指定了使用的分页类,可以选择使用PageNumberPagination、LimitOffsetPagination或CursorPagination等。这里我们选择了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的方法及使用例子的说明,通过配置全局设置和使用自定义分页类,可以方便地控制每页返回的数据量。
