如何使用django中的模态显示博客文章内容并删除它



我在django中为我的博客主页创建了一个引导模式,我想用它来删除帖子,并在删除之前显示帖子内容。

我的html触发模式看起来像这样:

<button type="button" data-toggle="modal" data-target="#delete" class="btn btn-danger">Delete</button>

然后我的模式:

<div class="modal fade" id="delete" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times</button>
<h3 class="modal-title">Do you really want to delete?</h3>
</div>
<div class="modal-body">
<p>{{ post.content }}</p>
</div>
<div class="modal-footer">
<a href="{% url 'post_delete' post.id %}" class="btn btn-danger btn-outline">Yes, Delete</a>
<button type="button" data-dismiss="modal" class="btn btn-secondary btn-outline">Cancel</button>
</div>
</div>
</div>
</div>

我的views.py文件如下所示:

class PostDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
model = Post
template_name = 'blog/home.html'
context_object_name = 'post'
success_url = reverse_lazy('blog_home')

我的urls.py文件:

urlpatterns = [
path('', PostListView.as_view(), name='stream_home'),
path('post/new/', PostCreateView.as_view(), name='post_create'),
path('post/<int:pk>/update/', PostUpdateView.as_view(), name='post_update'),
path('post/<int:pk>/delete/', PostDeleteView.as_view(), name='post_delete'),
]

和我的模型.py:

class Post(models.Model):
content = models.TextField(max_length=1000)
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
likes = models.IntegerField(default=0)
dislikes = models.IntegerField(default=0)
def __str__(self):
return self.content[:5]
def get_absolute_url(self):
return reverse('post_detail', kwargs={'pk': self.pk})

在尝试加载页面时,我会显示此错误:

Reverse for 'post_delete' with arguments '('',)' not found. 1 pattern(s) tried: ['post/(?P<pk>[0-9]+)/delete/$']

如果我删除删除按钮,页面就会加载,单击时会显示模态,但我的{{post.content}}标记无法显示。请帮忙。。。

从Django文档中,我认为您需要为DeleteView 使用一个表单

<form method="post">
{% csrf_token %}
<p>Are you sure you want to delete?</p>
<input type="submit" class="btn btn-danger btn-outline" value="Yes, Delete">
<button type="button" data-dismiss="modal" class="btn btn-secondary btn-outline">Cancel</button>
</form>

那个按钮好像什么也没用。也许可以将其更改为链接回Listview或其他

最新更新