【问题标题】:deleting an object in django在 django 中删除一个对象
【发布时间】:2018-03-28 16:05:40
【问题描述】:

我想从数据库中删除一个任务,所以我使用这个代码 这是我的删除视图

def task_Delete(request,id=None):
        if request.method == 'POST':
            form = TaskForm()
            id = int(request.POST.get('task.id'))
            task = Task.objects.get(id=id)
            task.delete()
            messages.success(request,"successfully delete")
            return render_to_response('home.html', {'form': form})

那是我的 urls.py

url(r'^task_Delete/$', views.task_Delete, name='task_Delete')

这是删除按钮的代码:

<form action="{% url 'task_Delete' %}" method="post" >
               {% csrf_token %}
            <input type="hidden" name="task_id" value="{{task.id}}" />
               <input type="submit" value="delete task">
        </form></td>
  </tr>

当我点击删除时没有发生任何事情,我不知道为什么,请帮助提前谢谢

【问题讨论】:

    标签: python html django


    【解决方案1】:

    您的代码中存在各种问题(例如,根本不需要TaskForm)但是如果您更改行

    id = int(request.POST.get('task.id'))

    id = int(request.POST.get('task_id'))

    该对象可能会被删除;请记住,请求参数的名称将与输入的name 相同(task_id)。我建议使用适当的 CBV(DeleteView)来完成您想做的事情 - 如果您想要一个缓慢而全面的教程,我推荐这篇文章:https://spapas.github.io/2018/03/19/comprehensive-django-cbv-guide/

    【讨论】:

    • 感谢您的回答,我的新views.py 是class taskDelete(DeleteView): model = task success_url = reverse_lazy('home') and urls.py url(r'^home/? [0-9]+/$', views.MyDeleteView.as_view(), name='task_Delete'), 还是什么都没发生
    • 您如何称呼您的删除视图?必须使用{% url "task_Delete" task.id %} 设置表单动作(不能像以前那样使用隐藏的task_id字段)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 2018-02-23
    • 2012-02-26
    • 1970-01-01
    • 2016-07-28
    • 2015-09-12
    相关资源
    最近更新 更多