如何显示博客文章内容并使用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'),]

还有我的models.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 docs中,我认为您需要为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或其他内容

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...