一 简介 利用封装好的视图类进行日常操作
二 具体描述
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.能有效的减少代码量