既然有了写文章的功能,那当然也必须要有删除文章的功能了。
不安全的方式
有了之前的学习做铺垫,删除文章实现起来就比较简单了。
首先增加一个视图函数:
article/views.py
...
# 删文章
def article_delete(request, id):
# 根据 id 获取需要删除的文章
article = ArticlePost.objects.get(id=id)
# 调用.delete()方法删除文章
article.delete()
# 完成删除后返回文章列表
return redirect("article:article_list")
- 与查询文章类似,因为需要知道具体应该删除哪一篇文章,因此必须传入文章的
id
; - 紧接着调用
.delete()
函数删除数据库中这篇文章的条目; - 删除成功后返回到文章列表。
这里与上一章一样,不对用户的身份进行限制,即任何人都可以删除任意文章。当然这样肯定是不符合常理的,等到我们学习了用户管理的知识后,再回头来修改。
然后写入路由信息:
article/urls.py
...
urlpatterns = [
...
# 删除文章
path('article-delete/<int:id>/', views.article_delete, name='article_delete'),
]
这里几乎与文章详情的写法一样,没有新的内容。再次注意文章的id是如何传递到视图中的。
最后我们希望能够在文章详情的页面进行删除的操作(当然也可以在专门的管理文章的页面中),因此修改模板detail.html
:
templates/article/detail.html
...
<!-- 文章详情 -->
<div class="container">
<div class="row">
...
<div class="col-12 alert alert-success">作者:{
{ article.author }}
· <a href="{% url "article:article_delete" article.id %}">删除文章</a>
</div>
...
&