首页 > 解决方案 > 在 Django 中删除帖子

问题描述

我是 django 新手,我正在尝试制作一个 Web 应用程序。我有这个页面页面图像,我想在按下删除按钮时删除一篇文章。我怎样才能做到这一点?这是我的“发布”模式:

class Post(models.Model):
    created_date = models.DateTimeField()
    title = models.CharField(max_length=100)
    profile_image = models.ImageField(upload_to='poze', blank=True, null=True)
    text = models.CharField(max_length=1000, default='Nimic', blank=True)
    user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)

我一直在寻找删除方法,但我总是找到仅表单的方法并且我不使用表单。谢谢你。

标签: pythondjango

解决方案


在你的 html 中:

<a href="{% url 'delete' p.id %}">Delete</a>

假设您正在使用 for 循环:

{% for p in posts %}   

在您的网址中:

path('delete/<post_id>',views.delete_post,name='delete')

在您看来:

def delete_post(request,post_id=None):
    post_to_delete=Post.objects.get(id=post_id)
    post_to_delete.delete()
    return HttpResponseRedirect(#name of the view function that returns your posts page)

就是这样

编辑

此方法直接从您的数据库中删除数据。因此,我建议您将 @login_required 装饰器添加到您的 delete_post 视图函数中以保护您的帖子。您还可以在您的 html 中使其仅供管理员用户或帖子所有者访问(例如:只有具有员工角色的用户才能看到删除链接)

{% if user.is_staff %}
<a ...>Delete</a>
{% endif %}

推荐阅读