在Django中删除对象的模式弹出窗口

2024-04-26 09:31:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用django generic DeleteView()从数据库中删除对象。deleteview工作正常。但在删除对象之前,我需要一条警告消息

我有一个列表视图,用于在表中显示对象列表。在该表中,我有一个垃圾图标,当用户按下垃圾图标时,它会重定向到删除url并删除对象。但是我不想转到其他页面进行删除,相反,我想留在列表页面上,如果我想删除对象,则需要弹出警告消息。如果单击“是”按钮,它将删除停留在该页面上的对象并刷新列表

我为此尝试了几种代码

<button action="{% url 'employee:employee-delete' employee.id %}" type="button" name="button" class="btn btn-dnager" onclick="document.getElementById('deleteEmployee').style.display='block'">
                                <span data-feather="trash"></span>
                            </button>
<div id="deleteEmployee" class="modal">
          <span onclick="document.getElementById('deleteEmployee').style.display='none'" class="close" title="Close Modal">×</span>
            <div class="modal-content">
                <h1>Delete Account</h1>
                <p>Are you sure you want to delete your account?</p>
            </div>

            {% block footer%}
            {% include 'employee/employee_delete.html' %}
            {% endblock footer %}
        </div>

目前我有上述代码的弹出消息和垃圾图标。单击图标时,将打开一个模式

employee_delete.html:

<!DOCTYPE html>
{% load static %}
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
    <link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">

  </head>
  <body>
    {% block footer%}
        <form id="deleteForm" action="" method="post">
          {% csrf_token %}
          <div class="clearfix">
           <button type="button" onclick="document.getElementById('deleteEmployee').style.display='none'" class="cancelbtn">Cancel</button>
           <button type="submit" action="" onclick="document.getElementById('deleteForm').submit();" class="deletebtn">Delete</button>
         </div>
        </form>
    {% endblock footer%}
</body>
</html>

以上代码用于我的删除表单。一切正常,但当我单击delete按钮时,什么也没有发生,不会删除对象,并给出Method Not Allowed (POST)此错误

views.py:

class EmployeeDeleteView(DeleteView):
    """
    Deletes a created employee
    """
    template_name = 'employee/employee_delete.html'
    context_object_name = 'employees'
    model = Employee


    def get_object(self):
        id_ = self.kwargs.get("id")
        return get_object_or_404(Employee, id=id_)

    def post(self, request, *args, **kwargs):
        employee = self.get_object()
        #print(employee.errors)
        return render(request, 'employee/employee_delete.html', {'employee': employee})
    

    def get_success_url(self):
        return reverse('employee:employee-list')

Tags: 对象selfdivid列表gethtmlemployee