Django Blog | 11 添加Django博客刪除功能(基礎(chǔ)版)
大家好,我是老表,這個(gè)系列將會(huì)更新我編寫,項(xiàng)目的學(xué)習(xí)筆記,也是后面更新的一個(gè)重點(diǎn),希望個(gè)人博客頁面可以早點(diǎn)和大家見面~歡迎大家點(diǎn)贊、留言支持。
添加Django博客刪除功能
一、前情回顧
在前面,我們完成了Django Blog博客markdown發(fā)布編輯頁面優(yōu)化,以及博客編輯功能實(shí)現(xiàn),順帶還優(yōu)化了博客詳情頁。
今天我們一起來實(shí)現(xiàn)下Django Blog的文章刪除功能。
Django Blog系列文章
Django Blog|01 創(chuàng)建環(huán)境和項(xiàng)目
Django Blog|02 創(chuàng)建admin賬戶&settings.py介紹
Django Blog|03 創(chuàng)建一個(gè)blog app和Article模型
Django Blog|04 創(chuàng)建blog視圖和完成MVT框架開發(fā)
Django Blog|06 添加博客詳情頁視圖,顯示博客詳情
Django Blog|07 引入Bootstrap前端框架,優(yōu)化頁面
Django Blog|08 添加編寫+發(fā)布博客功能
Django Blog | 09 這么簡單!實(shí)現(xiàn)博客markdown輸入和顯示
Django Blog | 10 自定義Form,美化頁面并實(shí)現(xiàn)文章編輯功能
二、博客文章刪除功能實(shí)現(xiàn)
在完成了文章的發(fā)布和編輯功能后,再來寫文章刪除功能,就非常好實(shí)現(xiàn)了,根據(jù)Django開發(fā)MVT框架,文章刪除功能還是只和文章有關(guān)系,所以我們不用新增或者修改模型,直接進(jìn)入/Project/brief_blog/myblog/blog/views.py中新建一個(gè)DeleteArticleView類,該類繼承自django自帶的通用視圖類DeleteView,可以很簡單的實(shí)習(xí)對(duì)象刪除操作,新增代碼如下:
from?django.views.generic?import?ListView,?DetailView,?CreateView,?UpdateView,?DeleteView
...和之前代碼一樣
#?刪除博客
class?DeleteArticleView(DeleteView):
????model?=?Article
????template_name?=?'article_delete.html'
如果和之前開發(fā)博客編輯一樣,我們接下來直接進(jìn)入/Project/brief_blog/myblog/templates中新建文章刪除頁面模板article_delete.html,并輸入如下內(nèi)容即可:
{%?extends?'base.html'?%}
{%?block?title?%}
????老表愛技術(shù)-刪除博客
{%?endblock?%}
{%?block?content?%}
<form?method="POST"?>
????
????
????{%?csrf_token?%}
????<h3?class="col-12?mt-4?mb-4">你正在刪除文章:<font?color="red">《{{article.title}}》font>h3>
????文章摘要:
????<h5?style="margin-top:?10px;margin-bottom:?10px;padding:?10px;outline:?0px;font-size:?14px;white-space:?normal;text-align:?left;color:?rgb(62,?62,?62);background-color:?rgb(248,?248,?248);border-radius:?3px;line-height:?2;word-break:?break-all?!important;letter-spacing:?1px?!important;word-spacing:?1px?!important;">
????????{{article.summary}}
????h5>
????確認(rèn)立即刪除嗎?
????<br>
????<button?type="submit"?class="btn?btn-primary?mt-4?mb-4">刪除button>?
????<a?class="btn?btn-primary?mt-4?mb-4"?href="{%?url?'detial_article'?article.pk?%}">返回a>?
form>
{%?endblock?%}
這相當(dāng)于我們新建了一個(gè)文章刪除頁面,創(chuàng)建好模板,接下來還需要給新建視圖添加路由,我們進(jìn)入到/Project/brief_blog/myblog/blog/urls.py,然后添加上DeleteArticleView的路由:
from?django.urls?import?path
from?blog?import?views
urlpatterns?=?[
????#?第一個(gè)參數(shù):路由地址
????#?第二個(gè)參數(shù):視圖函數(shù),直接通過views調(diào)用即可,要加上as_view
????#?第三個(gè)參數(shù):路由名
????path('',?views.HomeView.as_view(),?name='home'),
????#??pk表示文章的編號(hào),系統(tǒng)自帶的主鍵
????path('article/' ,?views.ArticleDetailView.as_view(),?name='detial_article'),
????path('add_article',?views.AddArticleView.as_view(),?name='add_article'),
????path('article/edit/' ,?views.EditArticleView.as_view(),?name='edit_article'),
????path('article/delete/' ,?views.DeleteArticleView.as_view(),?name='delete_article'),
]
接下來,我們還需將刪除按鈕配置在前端頁面上,按我理解,編輯和刪除按鈕應(yīng)該在同一個(gè)頁面(文章詳情頁),不過我看大部分博客社區(qū)都沒有把刪除按鈕放在文章詳情頁,而是有一個(gè)專門的文章管理頁面(我們后面也寫一個(gè)),現(xiàn)在我先將其放到文章詳情頁吧,我們直接修改下/Project/brief_blog/myblog/templates/article_detial.html即可,
...和之前一樣
{%?block?content?%}
<div?class="row">
????
????<h1?class="col-12?mt-4?mb-4">{{?article.title?}}h1>
????<div?class="col-12?mt-4?mb-4">
????????作者:{{ article.author }}?
????????<a?href="{%?url?'edit_article'?article.pk?%}"?style="text-decoration:none;font-size:?12px;text-align:?right;float:right;color:?rgb(93,?89,?89)">
????????????| 編輯
????????a>
????????
????????<a?href="{%?url?'delete_article'?article.pk?%}"?style="text-decoration:none;font-size:?12px;text-align:?right;float:right;color:?rgb(93,?89,?89)">
????????????刪除
????????a>
????div>
????
????<h5?style="margin-top:?10px;margin-bottom:?10px;padding:?10px;outline:?0px;font-size:?14px;white-space:?normal;text-align:?left;color:?rgb(62,?62,?62);background-color:?rgb(248,?248,?248);border-radius:?3px;line-height:?2;word-break:?break-all?!important;letter-spacing:?1px?!important;word-spacing:?1px?!important;">
????????{{article.summary}}
????h5>
div>
<div?id="content">
????<textarea>{{article.content}}textarea>
div>
<script?src="{%?static?'mdeditor/js/jquery.min.js'?%}">script>
...和以前一樣

本文為付費(fèi)專欄,每周更新1-2篇,利用Django帶大家一起實(shí)現(xiàn)個(gè)人博客,最后也會(huì)上線。
如果是對(duì)Django感興趣的初學(xué)者可以購買,如果你對(duì)Django已經(jīng)有所了解了,那我不建議你付費(fèi),你可以選擇后面你感興趣的、更深層次的章節(jié)進(jìn)行付費(fèi),如果需要的話。
閱讀到這里的都是真想學(xué)習(xí)Django的學(xué)習(xí)者,我為大家準(zhǔn)備了一個(gè)Django學(xué)習(xí)交流群(付費(fèi),9.9元/年,每增加10人,漲價(jià)10元),加入方式如下:
給本文留言,然后大家掃下方二維碼,添加我微信,發(fā)送9.9元紅包+留言截圖即可加入:
掃碼即可加我微信
老表朋友圈經(jīng)常有贈(zèng)書/紅包福利活動(dòng)
踩坑
1、今天突然新建文章和編輯文章時(shí)會(huì)發(fā)生下面錯(cuò)誤
NoReverseMatch

