Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中使用基于类的视图使用引导模式删除对象?_Python_Django_Bootstrap 4_Bootstrap Modal_Django Class Based Views - Fatal编程技术网

Python 如何在Django中使用基于类的视图使用引导模式删除对象?

Python 如何在Django中使用基于类的视图使用引导模式删除对象?,python,django,bootstrap-4,bootstrap-modal,django-class-based-views,Python,Django,Bootstrap 4,Bootstrap Modal,Django Class Based Views,我在Django中使用CBV删除项目。我想做的是,当我单击要删除的按钮时,而不是将我重定向到post_confirm_delete视图,我想弹出一个模式,在该模式中显示用户是否要删除对象的问题,以及一个确认按钮和另一个删除对象的按钮。我已经在HTML中尝试过: <button class="btn" data-toggle="modal" data-target="#fm-modal-grid">Delete</button> <div class="modal f

我在Django中使用CBV删除项目。我想做的是,当我单击要删除的按钮时,而不是将我重定向到post_confirm_delete视图,我想弹出一个模式,在该模式中显示用户是否要删除对象的问题,以及一个确认按钮和另一个删除对象的按钮。我已经在HTML中尝试过:

<button class="btn" data-toggle="modal" data-target="#fm-modal-grid">Delete</button>
<div class="modal fade" id="fm-modal-grid" tabindex="-1"
     role="dialog" aria-labelledBy="fm-modal-grid"
    aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <button class="close" data-dismiss="modal" aria-label="Cerrar">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <div class="container-fluid">
                    <div class="row">
                        <div class="col-12 col-sm-6">
                            <p>Are you sure you want to delte {{post.title}}</p>
                        </div>
                    </div>
                </div>
            </div>

            <div class="modal-footer">
                <a href="{% url 'blog:post_remove' pk=post.pk %}" class="btn">Delete</a>
                <button class="btn btn-primary" data-dismiss="modal">Cancelar</button>

            </div>
        </div>
    </div>
</div>
url文件如下所示:

urlpatterns = [
    path('',views.PostListView.as_view(),name='post_list'),
    path('article/', views.ArticleView.as_view(), name="article"),
    path('newpost/', views.CreatPostView.as_view(), name="new_post"),
    path('post/<int:pk>', views.PostDetailView.as_view(), name='post_detail'),
    path('post/<int:pk>/edit/', views.PostUpdateView.as_view(), name='post_edit'),
    path('post/<int:pk>/remove/', views.PostDeleteView.as_view(), name='post_remove'),
]
<form action="{% url 'blog:post_remove' pk=post.pk %}" method="POST">
       {% csrf_token %}
       <button class="btn">Delete</button>
</form>
urlpatterns=[
路径(“”,views.PostListView.as_view(),name='post_list'),
路径('article/',views.ArticleView.as_view(),name=“article”),
路径('newpost/',views.createpostview.as_view(),name=“new_post”),
路径('post/',views.postdailview.as_view(),name='post_detail'),
路径('post//edit/',views.PostUpdateView.as_view(),name='post_edit'),
路径('post//remove/',views.PostDeleteView.as_view(),name='post_remove'),
]
当我按下模式中的删除按钮时,它会将我重定向到索引,但不会删除对象。我该怎么做?

仅当请求方法为POST时,才会删除给定对象

因此,这种联系是它不起作用的原因。我解决了这个问题,将删除模式按钮放在如下表单中:

urlpatterns = [
    path('',views.PostListView.as_view(),name='post_list'),
    path('article/', views.ArticleView.as_view(), name="article"),
    path('newpost/', views.CreatPostView.as_view(), name="new_post"),
    path('post/<int:pk>', views.PostDetailView.as_view(), name='post_detail'),
    path('post/<int:pk>/edit/', views.PostUpdateView.as_view(), name='post_edit'),
    path('post/<int:pk>/remove/', views.PostDeleteView.as_view(), name='post_remove'),
]
<form action="{% url 'blog:post_remove' pk=post.pk %}" method="POST">
       {% csrf_token %}
       <button class="btn">Delete</button>
</form>

{%csrf_令牌%}
删除

事实上,你需要把你的按钮放在一个表单中才能发表文章

另一种解决方案是使用一些JS触发模式,然后当确认删除时,可以进行POST类型的Ajax调用。因此,您没有义务将按钮放在表单中

$.confirm({
        title: 'Deletion pop-up',
        content: 'Do you want to proceed ?',
        buttons: {
            confirm: function () {
              $.ajax({...}),
                success: function(response){...},
            }
        }
)};

尝试将
post\u detail
放在
urlpatterns
列表的底部。@BearBrown它不起作用:(它仍然会将我发送到post_列表,而不会删除目标。我编辑了你的答案,并为其他将搜索同一问题的人提供了详细信息,请不要忘记接受你的答案。这是使用jQuery?好的,我会记住这个方法,非常感谢:)