Django .delete()不工作

1 投票
1 回答
1600 浏览
提问于 2025-04-18 16:09

我正在用Django做一个简单的论坛。

现在,我想让前端能够删除帖子。

这是我在views.py里的代码:

@login_required
def delete_post(request, id):
    post_to_delete = get_object_or_404(Post, pk=id)

    if post_to_delete.owner_user != request.user:
        return HttpResponseForbidden()

    if request.method == 'POST':
        form = DeletePostForm(request.POST, instance=post_to_delete)
        if form.is_valid():
            post_to_delete.delete()

            return HttpResponseRedirect('/') 
    else:
        form = DeletePostForm(instance=post_to_delete)

    return render(request,'delete_post.html', {'form':form})

我觉得我用得当了.delete()这个函数,当我点击删除按钮时,会跳转到delete_post.html页面,但当我回去查看管理员的帖子列表时,那个帖子还是在那儿……

1 个回答

0

好的,之前我已经告诉过你,其实删除一个实例并不需要用到表单。现在我给你一个不使用表单的版本。

@login_required
def delete_post(request, id):
    post_to_delete = get_object_or_404(Post, pk=id)

    if post_to_delete.owner_user != request.user:
        return HttpResponseForbidden()

    if request.method == 'POST':   
        post_to_delete.delete()
        return render(request,'delete_post.html', {'deleted':True})

    return render(request,'delete_post.html', {'deleted':False})

你可以在你的模板中随意使用 deleted 这个变量。

撰写回答