Bootstrap Modal提交按钮不适用于Django 2.2中的DeleteView

时间:2019-11-29 20:36:22

标签: django django-models bootstrap-4 django-views

我正在学习Django 2.2,并使用了一些Bootstrap 4来帮助前端。我创建了一个模型,该模型存储了一些用户信息,例如名字和姓氏。我创建了一个DeleteView类,该类应该使用ID从数据库中删除条目。一切正常。但是,如果我尝试使用Bootstrap模态窗口实现DeleteView类,即使单击提交按钮,似乎也没有任何反应。我不确定自己在做什么错。我在Stackoverflow的另一个线程中读到,我们需要将按钮包含在我已经完成的表单中。但是它仍然不会删除该条目。下面是所需的所有代码。

注意-我已将Delete按钮放在contacts_view.html文件中。 contacts_delete.html文件完全相同。我的想法是使用户不仅可以查看详细信息,还可以更新甚至删除特定条目。当我单击“删除”按钮时,将出现模式弹出窗口。但是,当我单击“确认”按钮时,该条目不会被删除。

请让我知道如何进行此操作。

contacts_view.html /contacts_delete.html

{% extends 'base.html' %}

{% block content %}
    <div class="container" style="width: 500px">
        <div>
            <div class="list-group" style="color: black">
                <a class="list-group-item list-group-item-action my-1" style="background-color: wheat">
                    <div class="row">
                        <div class="col-4">
                            First Name
                        </div>
                        <div class="col-8">
                            {{ object.first_name }}
                        </div>
                    </div>
                </a>
                <a class="list-group-item list-group-item-action my-1" style="background-color: wheat">
                    <div class="row">
                        <div class="col-4">
                            last Name
                        </div>
                        <div class="col-8">
                            {{ object.last_name }}
                        </div>
                    </div>
                </a>
            </div>
        </div>

        <div class="border-top text-center my-4 pt-3">
            <a class="btn btn-outline-danger ml-2" href="{% url 'contacts-delete' object.id %}" type="submit" data-toggle="modal" data-target="#myModal">Delete</a>

            <!-- Modal -->
            <div class="modal fade" id="myModal" role="dialog">
                <div class="modal-dialog">

                    <!-- Modal content-->
                    <div class="modal-content" style="background-color: whitesmoke; color: dimgray">
                        <div class="modal-header">
                            <h4 class="modal-title">Delete Contact</h4>
                            <button type="button" class="close" data-dismiss="modal">&times;</button>
                        </div>
                        <div class="modal-body text-left">
                            form
                            <p>Do you really want to delete {{ object.first_name }} {{ object.last_name }}?</p>
                        </div>
                        <div class="modal-footer">
                            <form method="POST" action="{% url 'contacts-delete' object.id %}">
                                {% csrf_token %}
                <button class="btn btn-outline-warning ml-2" type="submit">Update</button>
                                <button type="button" class="btn btn-outline-danger" href="{% url 'contacts-delete' object.id %}" data-dismiss="modal">Delete</button>
                            </form>

                            <a type="button" class="btn btn-outline-secondary" href="{% url 'contacts-view' object.id %}" data-dismiss="modal">Cancel</a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
{% endblock content %}

views.py

from .models import Contact
from django.urls import reverse_lazy
from django.shortcuts import reverse
from django.views.generic import DetailView, DeleteView

class ContactDetailView(DetailView):
    model = Contact
    template_name = 'contacts/contacts_view.html'

class ContactDeleteView(DeleteView):
    model = Contact
    template_name = 'contacts_update.html'
    success_url = reverse_lazy('contacts-browse')

models.py

from django.db import models
from django.contrib.auth.models import User

class Contact(models.Model):
    added_by = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
    first_name = models.CharField(max_length=35)
    last_name = models.CharField(max_length=35, blank=True, default='')

    def __str__(self):
        return f"{self.first_name} {self.last_name}"

urls.py

from django.urls import path
from .views import ContactDetailView, ContactDeleteView

urlpatterns = [
    path('view/<int:pk>/', ContactDetailView.as_view(), name='contacts-view'),
    path('view/<int:pk>/delete/', ContactDeleteView.as_view(), name='contacts-delete'),
]

0 个答案:

没有答案