Pau*_*nda 5 python django django-class-based-views bootstrap-modal bootstrap-4
I\xc2\xb4m 在 Django 中使用 CBV 来删除项目。我想要做的是,当我单击要删除的按钮时,我不想将我重定向到 post_confirm_delete 视图,而是弹出一个模式,在其中显示用户是否要删除对象的问题以及确认按钮和其他删除对象。我在 HTML 中尝试过:
\n\n<button class="btn" data-toggle="modal" data-target="#fm-modal-grid">Delete</button>\n<div class="modal fade" id="fm-modal-grid" tabindex="-1"\n role="dialog" aria-labelledBy="fm-modal-grid"\n aria-hidden="true">\n <div class="modal-dialog modal-lg">\n <div class="modal-content">\n <div class="modal-header">\n <button class="close" data-dismiss="modal" aria-label="Cerrar">\n <span aria-hidden="true">×</span>\n </button>\n </div>\n <div class="modal-body">\n <div class="container-fluid">\n <div class="row">\n <div class="col-12 col-sm-6">\n <p>Are you sure you want to delte {{post.title}}</p>\n </div>\n </div>\n </div>\n </div>\n\n <div class="modal-footer">\n <a href="{% url \'blog:post_remove\' pk=post.pk %}" class="btn">Delete</a>\n <button class="btn btn-primary" data-dismiss="modal">Cancelar</button>\n\n </div>\n </div>\n </div>\n</div>\n
Run Code Online (Sandbox Code Playgroud)\n\n我在视图类的 delte CBV 中有这个:
\n\nclass PostDeleteView(DeleteView, LoginRequiredMixin):\n model = Post\n success_url = reverse_lazy(\'post_list\')\n template_name = \'blog/post_list.html\'\n
Run Code Online (Sandbox Code Playgroud)\n\nurl 文件如下所示:
\n\nurlpatterns = [\n path(\'\',views.PostListView.as_view(),name=\'post_list\'),\n path(\'article/\', views.ArticleView.as_view(), name="article"),\n path(\'newpost/\', views.CreatPostView.as_view(), name="new_post"),\n path(\'post/<int:pk>\', views.PostDetailView.as_view(), name=\'post_detail\'),\n path(\'post/<int:pk>/edit/\', views.PostUpdateView.as_view(), name=\'post_edit\'),\n path(\'post/<int:pk>/remove/\', views.PostDeleteView.as_view(), name=\'post_remove\'),\n]\n
Run Code Online (Sandbox Code Playgroud)\n\n当我按下模式内的“删除”按钮时,它会将我重定向到索引,但不会删除该对象。我怎样才能做到这一点?
\n通过文档
仅当请求方法为 POST 时,才会删除给定对象。
所以该链接是它不起作用的原因。我通过将用于删除的模态按钮放入这样的表单中解决了这个问题:
<form action="{% url 'blog:post_remove' pk=post.pk %}" method="POST">
{% csrf_token %}
<button class="btn">Delete</button>
</form>
Run Code Online (Sandbox Code Playgroud)