增删改查

查:

前端实例:

 mounted() {
//获取所有数据
// var Base_url = 'http://paas.bktst.sh.sgcc.com.cn/t/files-check/';
this.$axios({
method:'get',
// url:Base_url+'checkitems'+'/',
url:'/checkitems/',
}).then(resp=>{
console.log(resp.data);
this.tableData = resp.data;
this.total = resp.data.length;
}).catch(resp=>{
console.log(resp);
});

后端代码实例:

class CheckItemsViewSet(viewsets.ViewSet):
'''
list:
获取检查项
'''
def list(self,request):
queryset = CheckItems.objects.all()
serializer = CheckItemsGetSerializer(queryset,many=True)
return Response(serializer.data)

增:

前端实例:

var data = {
'name': this.formAdd.name,
'desc': this.formAdd.desc,
'check_item_class':this.formAdd.check_item_class,
'order':this.formAdd.order, 'is_score':this.is_score,
'is_file':this.is_file,
'collect_methods':this.collect_methods,
'object_type':this.object_type, 'file_name':this.formAdd.file_name,
'collect_script':this.formAdd.collect_script,
'collect_result_score':this.formAdd.collect_result_score
};
this.$axios({
method: 'post',
// url:Base_url+'checkitems'+'/',
url:'/checkitems/',
headers: {'X-CSRFToken': this.getCookie('csrftoken')},
data: data,
}).then(resp => {
console.log(resp.data);
console.log(resp.status);
}).catch((resp) => {
console.log(resp.status);
});

后端代码实例:

class CheckItemsViewSet(viewsets.ViewSet):
'''
create:
增加检查项
'''
def create(self,request):
serializer = CheckItemsUpdateSerializer(data = request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)

改:

前端实例:

formEdit:{
name:'',
desc:'',
collect_methods:'',
check_item_class:'',
order:'',
is_score:'',
is_file:'',
file_name:'',
object_type:'',
collect_script:'',
collect_result_score:'',
},
var id = this.formEdit.id;
var data = {
'id':this.formEdit.id,
'name':this.formEdit.name,
'desc':this.formEdit.desc,
'check_item_class':this.formEdit.check_item_class,
'order':this.formEdit.order, 'is_score':this.is_score,
'is_file':this.is_file,
'collect_methods':this.collect_methods,
'object_type':this.object_type, 'file_name':this.formEdit.file_name,
'collect_script':this.formEdit.collect_script,
'collect_result_score':this.formEdit.collect_result_score,
}; this.$axios({
method:'put',
// url:Base_url+'checkitems'+'/'+id+'/',
url:'/checkitems/'+id+'/',
data: data,
}).then(resp=>{
// 刷新父级页面
parent.location.reload();
console.log(resp.data);
console.log(resp.status);
}).catch(resp=>{
console.log(resp.status);
});

后端代码实例:

逻辑就是前端传id进来,然后后端后去到id,然后到数据库中查询
通过id然后找到数据,然后更改相应的字段
class CheckItemsViewSet(viewsets.ViewSet):
def update(self,request,pk=None):
obj = CheckItems.objects.get(id = pk) #先到数据库中获取数据,然后在把前端的数据复制给数据库相关字段
data = request.data # 获取前端数据
obj.name = data['name']
obj.desc = data['desc']
obj.check_item_class = data['check_item_class']
obj.order = data['order'] if data['is_score'] == '自动打分' or data['is_score'] == 1:#根据前端传的数据,然后保存到数据库中;choice保存一定要保存数字
obj.is_score = 1
else:
obj.is_score = 2 if data['is_file'] == '导出文件' or data['is_file'] == 1:
obj.is_file = 1
else:
obj.is_file = 2 if data['collect_methods'] == '数据库' or data['collect_methods'] ==1:
obj.collect_methods = 1
else:
obj.collect_methods = 2 if data['object_type'] == '中间件' or data['object_type'] == 1:
obj.object_type = 1
elif data['object_type'] == '数据库' or data['object_type'] == 2 :
obj.object_type = 2
else:
obj.object_type = 3 obj.file_name = data['file_name']
obj.collect_script = data['collect_script']
obj.collect_result_score = data['collect_result_score']
obj.save()
serializer = CheckItemsGetSerializer(obj)
return Response(serializer.data)

删:

前端代码:

formEdit:{
name:'',
desc:'',
collect_methods:'',
check_item_class:'',
order:'',
is_score:'',
is_file:'',
file_name:'',
object_type:'',
collect_script:'',
collect_result_score:'',
},
var id = this.formEdit.id;
this.axios({
method:'delete',
// url:Base_url+'checkitems'+'/'+id+'/',
url:'/checkitems/'+id+'/', }).then(resp=>{
console.log(resp.status)
}).catch(resp=>{
console.log(resp.status)
})

后端代码实例:

class CheckItemsViewSet(viewsets.ViewSet):
def destory(self,request,pk=None):
obj = CheckItems.objects.get(id = pk)
obj.delete()

作者:萌蛋酱
链接:https://www.jianshu.com/p/f7309f3cd831

axios和drf结合的增删改查的更多相关文章

  1. 基于DRF的图书增删改查练习

    功能演示 信息展示 添加功能 编辑功能 删除功能 DRF构建后台数据 本例的Model如下 from django.db import models class Publish(models.Mode ...

  2. 基于DRF的图书增删改查

    功能演示 信息展示 添加功能 编辑功能 删除功能 DRF构建后台数据 本例的Model如下 from django.db import models class Publish(models.Mode ...

  3. Django drf:序列化增删改查、局部与全局钩子源码流程、认证源码分析、执行流程

    一.序列化类的增.删.改.查 用drf的序列化组件   -定义一个类继承class BookSerializer(serializers.Serializer):   -写字段,如果不指定source ...

  4. VUE2.0增删改查附编辑添加model(弹框)组件共用

    Vue实战篇(增删改查附编辑添加model(弹框)组件共用) 前言 最近一直在学习Vue,发现一份crud不错的源码 预览链接 https://taylorchen709.github.io/vue- ...

  5. Django REST framework 五种增删改查方法

    Django-DRF-视图的演变   版本一(基于类视图APIView类) views.py: APIView是继承的Django View视图的. 1 from .serializers impor ...

  6. vue.js带复选框表单的增删改查

    近段时间由于公司项目要求,前端开始使用VUE框架进行开发,最近刚开始学习,做了一个表单的增删改查,和大家分享一下. 页面模型代码设计如下 <template> <div id=&qu ...

  7. 后盾网lavarel视频项目---lavarel使用模型进行增删改查操作

    后盾网lavarel视频项目---lavarel使用模型进行增删改查操作 一.总结 一句话总结: 使用模型操作常用方法 查一条:$model=Tag::find($id); 删一条:Tag::dest ...

  8. SpringBoot-Vue实现增删改查及分页小DEMO

    前言 主要通过后端 Spring Boot 技术和前端 Vue 技术来简单开发一个demo,实现增删改查.分页功能以及了解Springboot搭配vue完成前后端分离项目的开发流程. 开发栈 前端 开 ...

  9. vue.js+element ui Table+spring boot增删改查

    小白初学,不懂的还是太多了,找了好多资料才做出来的先记录一下 1.先用Spring boot创建一个包含了增删改查的项目 2.创建vue.js项目 3.安装Element UI (1)进入项目文件夹下 ...

随机推荐

  1. 剑指Offer(三十六):两个链表的第一个公共结点

    剑指Offer(三十六):两个链表的第一个公共结点 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...

  2. WPF系列——简单绑定学习

    1. 绑定到元素对象.(实际项目中用处不大) 界面上两个关联的控件之间绑定,比如一个TextBlock 的FontSize和一个Slider 的Value绑定: <Slider Name=&qu ...

  3. markdown里面编辑代码

    转:http://c.biancheng.net/view/6623.html ------------------------------------------------------------ ...

  4. vue引入js文件时报This dependency was not found:错误

    vue引入js文件时报This dependency was not found:错误 使用了很多方法,原来是这么小的问题,特此记录 解决办法 添加 ./

  5. CQOI2016 不同的最小割 (最小割树模板)(等价流树的Gusfield构造算法)

    题目 最小割树模板 算法详解及证明见: 2016年国家队候选队员论文 <浅谈无向图最小割问题的一些算法及应用--绍兴一中 王文涛> 3.2节 CODE #include <bits/ ...

  6. 洛谷 P1005 动态规划 大数

    Problem Description 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n×m的矩阵,矩阵中的每个元素a(i,j)均为非负整数.游戏规则如下: 1 每次取数时须从每行各取走一个元素,共 ...

  7. python django -在setting 设定全局时间格式

    工作中遇到需要全局设定时间的格式,再此马克下 USE_L10N = False DATE_FORMAT = 'Y-m-d' DATETIME_FORMAT = 'Y年m月'

  8. MySQL kill进程后出现killed死锁问题

    公司同事删除一张大表的数据,本想直接drop表,但是使用了delete删除表,发现很慢,就kill了这个操作, 但是,kill后,表锁住了,因为在回滚表数据. 原文链接:https://blog.cs ...

  9. html5 打开摄像头

    <video onloadedmetadata="" id="inputVideo" style="width: 1080px;height: ...

  10. Tomcat 部署多个web项目

    1.若Tomcat的端口设置为10000,则http://localhost:10000访问的目录是 webapps 2.Service.xml中host内配置Context标签,path+docba ...