drf框架- modelviewset封装类

一 简介 利用封装好的视图类进行日常操作
二 具体描述
  1 类名 ModelViewSet
  2 继承方法类  
   ListModelMixin -->提供一个list方法,对应get方法 实现了列出一个查询集;响应数据可以设置分页。
   CreateModelMixin -->提供 create(request, *args, **kwargs) 方法,对应post方法 实现创建和保存新模型实例 
   RetrieveModelMixin -->提供 retrieve(request, *args, **kwargs) 方法,对应get方法 实现单条数据的查询功能
   UpdateModelMixin -->提供 update(request, *args, **kwargs) 方法,对应put方法,实现更新和保存现有模型实例。
   DestroyModelMixin -->提供一个 destroy(request, *args, **kwargs) 方法,对应delete`实现现有模型实例的删除
三 具体使用
  django后端
  1 url设置
    url(r'^books/$', views.BookModelView.as_view({'get':'list','post':'create'})),
    url(r'^books/(?P<pk>d+)/$', views.BookModelView.as_view({'get':'retrieve','put':'update','delete':'destroy'}))
 2 调用
   from rest_framework import viewsets
   class PersonalSet(ModelViewSet):
   queryset = models.objects.all()
   serializer_class = PersonalSerialize
   VUE 前端
   post /books/ 传递参数
   get /books/
   put /books/pk/ 传递参数
   delete /books/pk/
    retrieve /bokks/pk/
四 整体调用过程
  1 前端发送http请求
  2 modelviewset针对不同请求寻找http对应方法函数
    post->create函数
    get->list函数
    put-> 1 update函数(全字段更新,必须要有unique_key,否则会报错)
              2 partial_update(部分字段更新,不必须有unique_key,推荐使用) 
   delete->destroy函数
  3 针对传递参数进行有效性判断
    1 serializer.valid() 根据的是序列化内部定义的规则
       1 返回值True/False,只有通过才能执行下一步操作
       2 可以通过serializer.errors 查看错误
  4 最后调用serializer.save() 内部指向serializers.py内部方法
五 重写

    当不满足需求时.可以进行重

六 总结

   对于一般表格的处理,优先采用modelviewset.能有效的减少代码量

原文地址:https://www.cnblogs.com/danhuangpai/p/11242590.html