在Django RESTful框架中,实现分页功能非常简单。你只需要在视图(views)中设置pagination_class
属性,然后在URL配置中指定该视图即可。以下是一个简单的示例:
pip install djangorestframework
在你的Django项目的settings.py
文件中,将'rest_framework'
添加到INSTALLED_APPS
列表中。
创建一个分页类。在任意应用目录下创建一个名为pagination.py
的文件,并在其中添加以下内容:
from rest_framework.pagination import PageNumberPagination
class StandardResultsSetPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 100
在这个例子中,我们创建了一个名为StandardResultsSetPagination
的分页类,每页显示10条记录。你还可以根据需要自定义page_size
、page_size_query_param
和max_page_size
等属性。
pagination_class
属性。例如,如果你有一个名为MyModelViewSet
的视图,可以这样设置分页类:from rest_framework import viewsets
from .models import MyModel
from .serializers import MyModelSerializer
from .pagination import StandardResultsSetPagination
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
pagination_class = StandardResultsSetPagination
urls.py
文件中,可以这样配置路由:from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import MyModelViewSet
router = DefaultRouter()
router.register(r'mymodel', MyModelViewSet)
urlpatterns = [
path('', include(router.urls)),
]
现在,当你访问/mymodel/
这个URL时,Django RESTful框架会自动对查询结果进行分页,并在响应中包含分页信息。你可以通过?page_size=
参数来指定每页显示的记录数,例如/mymodel/?page_size=20
。