一,ListModelMixin

  • 提供list(request,args,*kwargs)方法
  • 获取已经存在的列表数据(获取多条记录)
  • 获取成功,则返回200 OK

    1,引入方式

    1. from rest_framework.mixins import ListModelMixin

    2,源码对比

    DRF-Mixins - 图1
    可见代码基本一致,可以直接拿来进行优化本地代码

    3,使用方法

  • 视图类继承ListModelMixin

  • get方法中直接return self.list(request,args,*kwargs)

    1. def get(self, request, *args, **kwargs):
    2. return self.list(request, *args, **kwargs)

    二,CreateModelMixin

  • 提供create(request,args,*kwargs)方法

  • 创建新的模型实例(创建新的记录)
  • 创建成功,返回201,created
  • 如果请求参数有误,返回400 Bad Request

    1,引入方式

    1. from rest_framework.mixins import CreateModelMixin

    2,源码对比

    DRF-Mixins - 图2
    同样基本一致

    3,使用方法

  • 视图类继承CreateModelMixin

  • post方法中直接 return self.create(request,args,*kwargs)

    三,RetrieveModelMixin

  • 提供retrieve(request,args,*kwargs)方法

  • 获取已存在的详情数据(一跳记录)
  • 获取成功,返回200 ok
  • 如果不存在,则返回404 not found

    1,引入方式

    1. from rest_framework.mixins import RetrieveModelMixin

    2,原码对比

    DRF-Mixins - 图3

    3,使用方法

  • 视图类继承RetrieveModelMixin

  • get方法中直接return self.retrieve(request,args,*kwargs)

    1. def get(self, request, *args, **kwargs):
    2. return self.retrieve(request, *args, **kwargs)

    四,UpdateModelMixin

  • 提供update(request,args,*kwargs)方法用于全更新

  • 提供partail_update(request,args,*kwargs)方法,用户部分更新,支持PATCH
  • 更新成功 返回200 OK
  • 如果请求参数有误,返回 404 Bad Request
  • 如果不存在 ,返回 404 not found

    1,引入方式

    1. from rest_framework.mixins import UpdateModelMixin

    2,原码对比

    DRF-Mixins - 图4
    这里有一点不一样,原码中有一个 partial 这个表示可以进行部分更新,因此update方法不仅支持全更新,也可以支持部分更新

    3,使用方法

  • 视图类继承UpdateModelMixin

  • put方法中直接return self.retrieve(request,args,*kwargs)

    1. def put(self, request, *args, **kwargs):
    2. return self.update(request, *args, **kwargs)

    五,DestoryModelMixin

  • 提供destory(request,args,*kwargs)方法

  • 删除一条已经存在的数据
  • 删除成功,返回204 no content
  • 如果不存在,返回404 not found

    1,引入方式

    1. from rest_framework.mixins import DestroyModelMixin

    2,原码对比

    DRF-Mixins - 图5

    3,使用方法

  • 视图类继承DestoryModelMixin

  • delete方法中直接return self.retrieve(request,args,*kwargs)
    1. def delete(self, request, *args, **kwargs):
    2. return self.destroy(request, *args, **kwargs)