django修改删除

03
六月
2021

1、 删除接口

class CateView(View):
    
    def delete(self, request):
        # 1、获取路由当中的参数
        cate_id = request.GET.get('cate_id')
        # 2、获取要删除的对象
        # pk 代表主键
        try:
            cate_obj = Cate.objects.get(pk=cate_id)
        except Cate.DoesNotExist:
            return JsonResponse({'msg': '获取分类不存在', 'code': 400})
        # 3、删除
        cate_obj.delete()
        # 4、删除成功,返回消息
        return JsonResponse({'msg': '删除成功', 'code': 200})

2、 接口文档

请求地址: http://127.0.0.1:8000/app01/cate/

请求方法: delete

请求参数: cate_id

请求示例: http://127.0.0.1:8000/app01/cate/?cate_id=1

返回数据:json

数据格式:

{
    'msg': '删除成功',
    'code': 200
}

3、在ShowCate.vue页面当中,删除按钮上添加点击事件

<template>
	<button @click="delCate(cate.id)">删除</button>
</template>
<script>
export default {
    methods: {
        // 删除分类
        // 删除分类
        delCate(cate_id) {
            console.log(cate_id)
            // 向删除的接口发送请求
            this.axios({
                url: '/app01/cate/?cate_id=' + cate_id,
                // 默认发送get请求,所以需要添加method为delete这个请求方法
                method: 'delete'
            }).then(res => {
                console.log(res.data)
            })
        },
    },
}
</script>
修改

1、为编辑按钮添加点击事件

<template>
	<button @click="toUpdate(cate.id)">编辑</button>
</template>

<script>
export default {
    methods: {
        // 去修改页面
        toUpdate(cate_id) {
            // 跳转页面
            this.$router.push({
                name: 'UpdateCate',
                query: {'cate_id': cate_id}
            })
        },
    },
}
</script>

2、 新建UpdateCate.vue页面

3、为UpdateCate.vue添加路由

import Vue from 'vue'
import Router from 'vue-router'
import UpdateCate from '@/components/UpdateCate'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/update_cate',  // 浏览器地址栏当中输入的路径
      name: 'UpdateCate',  // 使用$router.push跳转页面时,所带的参数
      component: UpdateCate  // 跳转到路径所批定页面以后,所显示 的vue页面
    }
      
  ]
})

4、 在页面加载完成之前获取要修改的对象的数据

<script>
export default {
    data() {
        return {
            cate_id: this.$route.query.cate_id,
            cate: {},
            name: ''
        }
    },
    methods: {
        // 获取分类的详情信息
        getDetail() {
            this.axios({
                url: '/app01/detail/?cate_id=' + this.cate_id
            }).then(res => {
                console.log(res.data)
                this.cate = res.data
                this.name = res.data.name
            })
        }
    },
    created() {
        // 在页面加载完成之前获取分类的详情信息, 调用getDetail() 这个方法
        this.getDetail()
    }
}
</script>

5、把获取到数据展示出来,确认原数据 进行修改

<template>
    <div>
        {{cate_id}}
        <div>
            原数据: {{cate.name}}
        </div>
        <div>修改内容: <input type="text" v-model="name"></div>
        <div><button>修改</button></div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            cate_id: this.$route.query.cate_id,
            cate: {},
            name: ''
        }
    },
    methods: {
        // 获取分类的详情信息
        getDetail() {
            this.axios({
                url: '/app01/detail/?cate_id=' + this.cate_id
            }).then(res => {
                console.log(res.data)
                this.cate = res.data
                this.name = res.data.name
            })
        }
    },
    created() {
        // 在页面加载完成之前获取分类的详情信息, 调用getDetail() 这个方法
        this.getDetail()
    }
}
</script>

6、 为修改添加点击事件,获取到输入的内容

<template>
    <div>
        <div><button @click="updateCate">修改</button></div>
    </div>
</template>

<script>
export default {
    methods: {
        // 修改分类
        updateCate() {
            console.log(this.name)
        },
    },
}
</script>

<style scoped>

</style>

7、 修改数据的接口

class CateView(View):
    
    def put(self, request):
       
        # 2、 获取提交的修改的数据
        print(request.body)
        name_str = (request.body).decode()
        # 使用json把获取内容转成字典
        name_dict = json.loads(name_str)
        cate_id = name_dict.get('cate_id')
        name = name_dict.get('name')
        # 3、通的对象的id查询要修改的对象
        cate_obj = Cate.objects.get(pk=cate_id)
        # 4、为查询对象里面的属性进行重新赋值,并保存
        cate_obj.name = name
        cate_obj.save()
        # 5、修改成功,返回消息
        return JsonResponse({'msg': '修改成功', 'code': 200})

8、 修改的接口文档

请求地址: http://127.0.0.1:8000/app01/cate/

请求方法: put

请求参数:

字段类型必填说明
cate_idinttrue要修改的对象id
namestringtrue修改的内容

返回数据:

{
    'msg': '修改成功',
    'code': 200
}

9、 完成修改功能

<template>
    <div>
        {{cate_id}}
        <div>
            原数据: {{cate.name}}
        </div>
        <div>修改内容: <input type="text" v-model="name"></div>
        <div><button @click="updateCate">修改</button></div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            cate_id: this.$route.query.cate_id,
            cate: {},
            name: ''
        }
    },
    methods: {
        // 修改分类
        updateCate() {
            console.log(this.name)
            this.axios({
                url: '/app01/cate/',
                method: 'put',
                data: {'cate_id': this.cate_id, 'name': this.name}
            }).then(res => {
                // 在控制台打印返回结果
                console.log(res.data)
            })
        },
        // 获取分类的详情信息
        getDetail() {
            this.axios({
                url: '/app01/detail/?cate_id=' + this.cate_id
            }).then(res => {
                console.log(res.data)
                this.cate = res.data
                this.name = res.data.name
            })
        }
    },
    created() {
        // 在页面加载完成之前获取分类的详情信息, 调用getDetail() 这个方法
        this.getDetail()
    }
}
</script>

<style scoped>

</style>

TAG

网友评论

共有访客发表了评论
请登录后再发布评论,和谐社会,请文明发言,谢谢合作! 立即登录 注册会员