首页 > 解决方案 > 如何在按钮单击时删除模型数据?- 姜戈

问题描述

我有以下按钮:<a style="float:right; margin:5px; color: white;" href="" class="btn btn-success" >Accept</a>

当用户单击按钮时,我想删除与pk

例如,当单击按钮时,我想将 传递{{donation.pk}}给函数并删除Donation与之关联的

我做了很多研究,但我找不到这样做的方法。

标签: pythondjango

解决方案


首先,您必须了解您使用的标签是客户端,这意味着客户端可以轻松访问。而且,Web 开发的另一部分是服务器端,这正好相反。或者,只有服务器可以访问的脚本(比如说)。在您的情况下,您的计算机从本地服务器托管 localhost:8000 并且该服务器是 django 的默认服务器。

现在,我们已经了解了两个主要部分,很容易分解。您想要的是删除带有 id 的捐赠,该捐赠位于后端或我们的数据库中。而且,在我们的例子中,数据库只能通过服务器访问,django 将与数据库进行通信。

因此,要删除捐赠,您将向服务器发送请求以请求删除捐赠。要发送该请求,您有许多方法,例如 GET、POST、PUT 等。在我们的例子中,我们将使用GET

首先,您的客户端将能够发送请求:

<a style="float:right; margin:5px; color: white;" href="/donations/{{donation.pk}}/delete/" class="btn btn-success" >Accept</a>

现在,我们将在urls.py中创建路径或路由。喜欢:

from . import views

urlpatterns = [
    path('donations/', views.donations, name='donations'),
    path('donations/<str:id>/delete/', views.deleteDonation, name='delete_donations'),
    path('donations/<str:id>/edit/', views.editDonation, name='edit_donations'),
]

制作完 urlpatterns 后,当我们点击tag的链接时,它会转到匹配的路由(在我们的例子中,它是第二个路由),然后它会转到我们的视图目录中的函数。

视图.py

.....
from django.shortcuts import get_object_or_404
from django.shortcuts import render

def deleteDonation(request, id=None):
    donation = get_object_or_404(Donation, pk=id)
    donation.delete()
    return render(request, "delete_your_donation_.html") 

推荐阅读