DRF全局配置和列表分页器

1.offset分页

编辑LehuXuexi目录下的settings.py新增

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

再把[:10]10条限制去掉,发现页面有了分页功能,传入参数offset

2.page分页

修改REST_FRAMEWORK配置项

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

传入参数为page

3.自定义分页

如果使用settings.py配好的分页器,会对全局生效灵活性不高,使用自定义分页比较好,注释全局分页器,编辑blogs目录下的views.py

from rest_framework import generics
from rest_framework.pagination import PageNumberPagination

from .serializers import ArticleSerializer
from .models import Article

class StandardResultsSetPagination(PageNumberPagination):
    page_query_param = 'page'
    page_size = 15
    page_size_query_param = 'page_size'
    max_page_size = 1000

class ArticleListView(generics.ListCreateAPIView):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer
    pagination_class = StandardResultsSetPagination

一页展示15篇文章,最大限制是1000页,分页传入字段名为page

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处

本文链接:http://zhangyanc.club/subject/article/global-drf/

许可协议:署名-非商业性使用 4.0 国际许可协议