django框架——实现MySQL数据库数据的删除

在html中的删除按钮中绑定js文件中的事件,带上参数,点击即触发(删除按钮不能是a链接,不然报错)

				<div v-for="blog in blogs" class="blogs">
					需求:[[ blog.contents ]]
					<br>
					用户:[[ blog.user ]]
					<br>
					联系方式:[[ blog.mobile ]]
					<br>
					时间:[[ blog.times ]]
					<br>
					地址:[[ blog.province ]] [[ blog.city ]] [[ blog.district ]] [[ blog.address ]]
					<button style="float: right;" @click="on_delete(blog.user, blog.id)">删除</button>
				</div>

js文件中实现该功能,发起ajax请求到后端视图中对数据库进行操作

var vm = new Vue({
    el: '#app',
    // 修改Vue变量的读取语法,避免和django模板语法冲突
    delimiters: ['[[', ']]'],
    data: {
        host,
        username:'',
        blogs:[]
    },
    mounted(){
        ...
    },
    methods: {
        ...
        // 删除博客
        on_delete(user, id){
            var url = this.host + '/delmyblogs/' + id;
            axios.delete(url, {
                data: {
                    blog_user: user,
                    blog_id: id
                },
                headers: {
                    'X-CSRFToken': getCookie('csrftoken')
                },
                responseType: 'json'
            }).then(response => {
                if(response.data.code == '0') {
                    alert("删除成功");
                    // 刷新页面
                    location.href = '/myblogs';
                }else {
                    alert("删除失败");
                }
            }).catch(error => {
                    alert("连接失败");
                })
        }
    }
});

路由导入

urlpatterns = [
    ...
    re_path(r'^delmyblogs', views.DelmyblogsView.as_view(), name='del_myblogs'),
]

在视图里面实现删除功能

class DelmyblogsView(LoginRequiredMixin, View):

    def delete(self, request):
        # 获取数据
        data = json.loads(request.body.decode())
        blog_user = data.get('blog_user')
        blog_id = data.get('blog_id')

        if request.user.is_authenticated and str(request.user) == str(blog_user):
            # 查询数据库
            try:
                blog = Blogs.objects.get(id=blog_id)
            except Blogs.DoesNotExist:
                return http.JsonResponse({'code': RETCODE.NODATAERR, 'errmsg': '暂无此数据'})
            # 删除
            try:
                blog.delete()
            except Exception as e:
                logger.error(e)
                return http.JsonResponse({'code': RETCODE.DBERR, 'errmsg': '删除失败'})

            # 返回响应
            return http.JsonResponse({'code': RETCODE.OK, 'errmsg': 'ok'})
        else:
            return http.JsonResponse({'code': RETCODE.SESSIONERR, 'errmsg': 'fail'})

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值