我是 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)Run Code Online (Sandbox Code Playgroud)
我一直在寻找删除方法,但我总是发现只有表单的方法并且我不使用表单。谢谢你。
在你的 html 中:
<a href="{% url 'delete' p.id %}">Delete</a>
Run Code Online (Sandbox Code Playgroud)
假设您正在使用 for 循环:
{% for p in posts %}
Run Code Online (Sandbox Code Playgroud)
在您的网址中:
path('delete/<post_id>',views.delete_post,name='delete')
Run Code Online (Sandbox Code Playgroud)
在您看来:
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)
Run Code Online (Sandbox Code Playgroud)
就是这样
编辑
此方法直接从数据库中删除数据。因此,我建议您将 @login_required 装饰器添加到 delete_post 视图函数中以保护您的帖子。您还可以在您的 html 中使其仅供管理员用户或帖子所有者访问(例如:只有具有员工角色的用户才能看到删除链接)
{% if user.is_staff %}
<a ...>Delete</a>
{% endif %}
Run Code Online (Sandbox Code Playgroud)