zoukankan      html  css  js  c++  java
  • axios和drf结合的增删改查

    增删改查

    查:

    前端实例:

     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

  • 相关阅读:
    39)自定义String类(没看)
    37)智能指针(就是自动delete空间)
    36)友元函数和重载操作符 (没看) 可以看视频
    35)类和结构体类比---this
    34)static 静态成员和静态成员函数
    33)new和delete关键字
    32)(典型)构造和析构 拷贝构造 小样例
    31)类中成员初始化
    30)构造函数的初始化列表
    29)深拷贝和浅拷贝
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/11288879.html
Copyright © 2011-2022 走看看