欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

axios和drf结合的增删改查

程序员文章站 2022-07-04 19:33:49
...

增删改查

查:

前端实例:

 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()