无法删除对象 - ?csrfmiddlewaretoken= 出现在 urlbar 中当前 URL 的末尾(django)

Can't get an object deletion - ?csrfmiddlewaretoken= appears at the end of the current URL in the urlbar (django)

我正在用 django 构建一个简单的社交网络。

在我的社交 "home" 中,我有所有用户发布的所有 post 的列表,以及作者和发布日期。在登录用户的每个 post 下方,都会出现一个 "delete" 按钮。如果用户单击它,它会 returns 那个 post 的特定视图,带有一条消息 "do you really wish to delete this post?" 和两个用于确认或取消 post 删除的按钮。

但是,当我单击按钮 "confirm deletion" 时,页面重新加载到同一点,除了

之外没有任何变化

?csrfmiddlewaretoken=--random-sequence--

出现在url栏中当前url的末尾。

我错过了什么?

这是我的模板:

<h3>Do you want to delete this post?</h3>

<div class="posts">
    {% include "posts/_post.html" with post=object hide_delete=True %}
</div>

<form class="POST">
    {% csrf_token %}

    <input type="submit" value="Confirm Delete" class="btn btn-danger btn-large">

    <a href="{% url 'posts:delete' pk=post.pk %}" class="btn btn-simple btn-large btn-default">Cancel</a>

</form>

我的 DeletePost 视图基于 generic.DeleteView:

class DeletePost(LoginRequiredMixin, SelectRelatedMixin, generic.DeleteView):

    model = models.Post
    select_related = ('user', 'group')
    success_url = reverse_lazy('posts:all')

    def get_queryset(self):
        queryset = super().get_queryset()
        return queryset.filter(user_id = self.request.user.id)

    def delete(self,*args,**kwargs):
        messages.success(self.request,'Post Deleted')
        return super().delete(*args,**kwargs)

您目前有

<form class="POST">

应该是

<form method="POST">

缺少方法时,浏览器默认执行 GET 请求,因此您会在 URL 查询字符串中看到表单值。