17.分页,视图分页,全局分页

针对每个视图

重写page页

from rest_framework.pagination import PageNumberPagination
class Pagination(PageNumberPagination):
    def get_page_size(self, request):
        try:
            # 每页的大小不能小于0
            page_size = int(request.query_params.get("page_size", -1))
            if page_size < 0:
                return self.page_size
            return page_size
        except:
            pass
        return self.page_size

视图导入分页

from rest_framework import viewsets
# from django.contrib.auth.models import User   # 当前这样写没有问题,后面会有问题
from django.contrib.auth import get_user_model
# 导入这个类,当前视图才有分页效果
from .pagination import Pagination
User = get_user_model()

from .serializers import UserSerializer
class UserViewSet(viewsets.ReadOnlyModelViewSet):
    """
    retrieve:
        返回一个实例,当前也就是返回一个用户信息
    list:
        返回用户列表
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer
    pagination_class=Pagination
    
    # page_size 来定义每页的记录条目数量 例如?page_size=5 则每页显示5条

效果
在这里插入图片描述

全局生效

setting.py

REST_FRAMEWORK = {
    #'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.AutoSchema',
    'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
    # 新版drf schema_class默认用的是rest_framework.schemas.openapi.AutoSchema
    "PAGE_SIZE": 10, #提供默认的分页大小
    "DEFAULT_PAGINATION_CLASS": "users.pagination.Pagination",
}

视图层(没有任何变动)

from rest_framework import viewsets
# from django.contrib.auth.models import User   # 当前这样写没有问题,后面会有问题
from django.contrib.auth import get_user_model
User = get_user_model()

from .serializers import UserSerializer
class UserViewSet(viewsets.ReadOnlyModelViewSet):
    """
    retrieve:
        返回一个实例,当前也就是返回一个用户信息
    list:
        返回用户列表
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值