当前位置: 首页 > article >正文

Django分页功能的使用和自定义分装

1. 在settings中进行注册
# drf配置
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        # 'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework_simplejwt.authentication.JWTAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    ),
    # 分页设置
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 2
}
2. 在utils/myPagination.py中根据业务要求自定义分页返回结果
from collections import OrderedDict

from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response


class MyPageNumberPagination(PageNumberPagination):
    # 1. page_size_query_param默认为None,前端通过传入pagesize字段指定一页有多少数据
    page_size_query_param = 'pagesize'
    # 2. 限制最大页面数量,为了安全
    max_page_size = 100

    # 3. 重写响应值,根据前端想要的 响应字段
    def get_paginated_response(self, data):
        return Response(OrderedDict([
            ('page', self.page.number),
            ('pages', self.page.paginator.num_pages),
            ('lists', data)
        ]))
3. 在视图中使用
from meiduo_admin.utils.myPagination import MyPageNumberPagination

class UsersView(ListAPIView):
    pagination_class = MyPageNumberPagination
    serializer_class = UsersSerialize
    # 获取queryset时需要进行排序否则会有报错提示
    queryset = models.User.objects.filter(is_staff=False).all().order_by('-date_joined')
4. 路由
from meiduo_admin.user.user_views import UsersView

urlpatterns = [

    # 获取用户
    path('users/', UsersView.as_view()),
]
5. postman返回结果


http://www.kler.cn/a/104163.html

相关文章:

  • Fastq文件的获取
  • 小学数学作业练习册出题网站源码_支持打印转成PDF
  • On Moving Object Segmentation from Monocular Video with Transformers 论文阅读
  • ajax请求的时候get 和post方式的区别?
  • 漏洞复现--用友 畅捷通T+ .net反序列化RCE
  • 【23种设计模式】里氏替换原则
  • (完全解决)如何输入一个图的邻接矩阵(每两个点的亲密度矩阵affinity),然后使用sklearn进行谱聚类
  • 华纳云:网络dns配置异常怎么处理
  • 驱动开发3 ioctl函数的使用+3个实例(不传递第三个参数、第三个参数为整型、第三个参数为地址)
  • Mac电脑窗口管理Magnet中文 for mac
  • JVM(一)
  • 【开源框架】Glide的图片加载流程
  • SpringCloud 微服务全栈体系(四)
  • 【C++】继承 ⑫ ( 继承的二义性 | virtual 虚继承 )
  • 51单片机KeyWard
  • 前端3D规划
  • 【C++】初阶模板
  • ORB-SLAM安装过程遇到问题记录整理
  • Look Back(cf div3 905)
  • GPT带我学-设计模式-10观察者模式