资讯专栏INFORMATION COLUMN

Django搭建个人博客:编写删除文章功能

Chaz / 1638人阅读

摘要:既然有了写文章的功能,那当然也必须要有删除文章的功能了。编写基本功能有了之前的学习做铺垫,删除文章实现起来就比较简单了。保存所有文件后刷新页面,很好,达到了理想的效果总结本章新增了删除博客文章的功能,并且使用了弹窗组件优化了用户体验。

既然有了写文章的功能,那当然也必须要有删除文章的功能了。

编写基本功能

有了之前的学习做铺垫,删除文章实现起来就比较简单了。

首先增加一个视图函数:

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//", views.article_delete, name="article_delete"),
]

这里几乎与文章详情的写法一样,没有新的内容。再次注意文章的id是如何传递到视图中的。

最后我们希望能够在文章详情的页面进行删除的操作(当然也可以在专门的管理文章的页面中),因此修改模板detail.html

templates/article/detail.html

...


...
作者:{{ article.author }} · 删除文章
...
...

这里增加了一个调用article_delete视图函数的链接,并且将article.id传递进去。

运行开发服务器,可以发现已经能够正常的删除文章了:

增加弹窗

功能已经实现了,但是还有个小问题没有解决:万一我只是不小心点到了链接,辛辛苦苦写的文章就被删除了,岂不是欲哭无泪了?

很容易想到的一个解决方法,就是点击删除按钮是出现一个弹窗,确认后再进行删除,确保用户不是误操作的。

弹窗是很常用的功能,但是想写出一个美观好用的弹窗却不容易。幸运的是我们不需要重复造轮子,早就有革命先驱做好相关的功能了,这里我们选择使用Layer弹窗组件

layer是一款备受青睐的web弹层组件,具备全方位的解决方案。首先到官网下载Layer插件:Layer

解压后将里面的layer文件夹(含有layer.js的)直接复制到项目的static文件夹下。

为了未来在所有页面都能使用Layer弹窗功能,在base.html中通过标签引入:

templates/base.html

...


    ...

    
    
    ...
    
    


...

layer插件依赖jquery才能正常工作,因此要在jquery的后面引入layer。

再次改写模板文件detail.html

templates/article/detail.html

...


...
作者:{{ article.author }} · 删除文章
...
{% endblock content %}

这里将href链接去除掉,增加了onclick属性,表示在点击链接的时候调用后面的confirm_delete()函数;函数中调用了layer弹窗组件,对弹窗的标题、正文以及点击确定键的行为作出了规定(当然Layer组件远不止这些用法,具体可在官方文档中查阅)。location.href定义了点击确定键后应该前往的地址,即删除文章的url。

保存所有文件后刷新页面,很好,达到了理想的效果:

总结

本章新增了删除博客文章的功能,并且使用了弹窗组件优化了用户体验。

下一章将学习如何更新文章,准备好继续作战吧。

有疑问请在杜赛的个人网站留言,我会尽快回复。

或Email私信我:dusaiphoto@foxmail.com

项目完整代码:Django_blog_tutorial

转载请告知作者并注明出处。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42594.html

相关文章

  • Django搭建个人博客编写博客文章的Model模型

    摘要:在里写一个数据库驱动的应用的第一步是定义模型,也就是数据库结构设计和附加的其它元数据。模型元数据是任何不是字段的东西,例如排序选项数据库表名单数和复数名称和。 Django 框架主要关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。 它们各自的职责如下: 层次 职责 模型(Model),即数据存取层 处理与数据相关的所有事务: 如何存取...

    winterdawn 评论0 收藏0
  • Django搭建个人博客:在博文中发表评论

    摘要:确认创建成功后,记得在中注册因为我们想显示发表评论的时间,修改时区设置为上海的时区。处理错误请求发表评论仅接受请求。返回到一个适当的中即用户发送评论后,重新定向到文章详情页面。总结本章实现了发表评论展示评论的功能。 在没有互联网的年代,我们用日记来记录每天的心得体会。小的时候我有一个带锁的日记本,生怕被别人看见里面写了啥,钥匙藏得那叫一个绝。 现在时代变了,网络版的日记本:博客,却巴不...

    Jinkey 评论0 收藏0
  • Django搭建个人博客:完成修改文章功能

    摘要:目前为止我们已经完成了文章的新建删除以及查看,还剩最后一项,即对已经完成的文章进行修改。总结至此我们就实现了一篇文章的增删改查四个基础功能,也算小有成就。有疑问请在杜赛的个人网站留言,我会尽快回复。 目前为止我们已经完成了文章的新建、删除以及查看,还剩最后一项,即对已经完成的文章进行修改。 实际上修改文章与新建文章有点类似,不同的地方有两点: 修改是在原有文章的基础上,因此需要传递 ...

    terasum 评论0 收藏0
  • Django搭建个人博客:使用Form表单类发表新文章

    摘要:一些表单界面元素文本框或复选框非常简单并内置在中,而其他会复杂些像弹出日期选择等操作控件。和标签中的属性指定了当前文本框提交的数据的名称,它必须与表单类中的字段名称对应,否则服务器无法将字段和数据正确的对应起来。 前面我们已经学会如何用Markdown语法书写文章了。 但是还有问题呀。之前写文章都是在后台中进行的,万一有别的普通用户也要发表文章怎么办?万一我想拓展些后台中没有的提交验证...

    Java3y 评论0 收藏0
  • Django搭建个人博客:用户的登录和登出

    摘要:最常见的用法就是存储用户的登录数据。如果用户未登录,则显示登录两个字提醒用户可以点击登录。创建文件用户登录配置根路由用户管理配置因为这个并没有改动,因此不用迁移数据。总结本章用到了表单类模板语句用户验证等知识完成了用户管理的登录和退出。 用户管理 用户数据可以说是大部分网站最重要的资产。用户管理就是对用户数据进行增删改查等操作的功能,自然也就非常的重要了。 本章开始学习用户管理的内容,...

    whidy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<