Django Blog|03 創(chuàng)建一個blog app和Article模型
大家好,我是老表,這個系列將會更新我編寫,項目的學(xué)習(xí)筆記,也是后面更新的一個重點,希望個人博客頁面可以早點和大家見面~歡迎大家點贊、留言支持。
Django Blog|01 創(chuàng)建環(huán)境和項目
Django Blog|02 創(chuàng)建admin賬戶&settings.py介紹
創(chuàng)建blog app
首先在vscode中我們啟動調(diào)試項目,然后打開終端,進入到對應(yīng)項目目錄下,執(zhí)行命令pipenv shell即可進入虛擬環(huán)境,然后再執(zhí)行下面命令創(chuàng)建一個admin賬戶,
python?manage.py?startapp?blog
運行后,我們看目錄結(jié)構(gòu),會發(fā)現(xiàn)多了一個blog目錄,也就是我們剛剛創(chuàng)建的一個app,
這里需要說明下myblog是我們創(chuàng)建項目時的目錄,可以理解為程序的入口,包含了配置文件、系統(tǒng)路由和web服務(wù)網(wǎng)關(guān)接口配置。
關(guān)于新創(chuàng)建的app blog目錄下的文件簡介(簡單介紹):
migrations 遷移文件,主要存放從models遷移到數(shù)據(jù)庫的數(shù)據(jù)庫操作語句; admin.py 注冊模型文件,注冊后的模型可以在admin管理后臺顯示; apps.py 可以在里面額外設(shè)置程序配置,并應(yīng)用配置; models.py 數(shù)據(jù)模型文件,數(shù)據(jù)庫設(shè)計主要在這里,直接創(chuàng)建類對象即可; tests.py 測試文件,主要用于app測試; views.py 視圖文件,主要寫功能實現(xiàn)函數(shù); urls.py(需要自己創(chuàng)建) 路由文件,注意聲明路由關(guān)系。
在settings中注冊新創(chuàng)建的app
創(chuàng)建好app,首先需要在settings中的INSTALLED_APPS中添加上新創(chuàng)建的app,
INSTALLED_APPS?=?[
????'django.contrib.admin',
????...
????'blog',??#?博客app
]
創(chuàng)建Article Models
進入到blog/models.py,我們先創(chuàng)建一個Article模型,文章模型主要包括文章作者、文章標(biāo)題、文章概要和文章正文這四個屬性,其他還應(yīng)該添加屬性有:標(biāo)題圖、文章標(biāo)簽、瀏覽量等,方便入門學(xué)習(xí),其余屬性后期再添加:
from?django.db?import?models
from?django.contrib.auth.models?import?User
#?Create?your?models?here.
class?Article(models.Model):
????"""
????創(chuàng)建一個基本的文章對象
????包括:作者、標(biāo)題、概要、正文
????后期需要添加:標(biāo)題圖、文章標(biāo)簽、瀏覽量等
????"""
????#?文章作者,author?通過?models.ForeignKey?外鍵與系統(tǒng)自帶的?User?模型關(guān)聯(lián)在一起
????#?參數(shù) on_delete 用于指定數(shù)據(jù)刪除的方式,避免兩個關(guān)聯(lián)表的數(shù)據(jù)不一致。
????author?=?models.ForeignKey(User,?on_delete=models.CASCADE)
????#?文章標(biāo)題
????title?=?models.CharField(max_length=255,?null=False,?blank=False)
????#?文章概要
????summary?=?models.CharField(max_length=255,?null=False,?blank=False)
????#?文章正文
????content?=?models.TextField()
????
????#?內(nèi)部類?class?Meta?用于給?model?定義元數(shù)據(jù)
????class?Meta:
????????#?ordering?指定模型返回的數(shù)據(jù)的排列順序
????????#?'-title'?表明數(shù)據(jù)列表顯示按標(biāo)題名稱降序排列
????????ordering?=?('-title',)
????????#?db_table?歉意映射到數(shù)據(jù)庫后的表名
????????db_table?=?'tb_article'
????????#?django后臺管理系統(tǒng)顯示名稱
????????verbose_name?=?'文章管理'
????????verbose_name_plural?=?verbose_name
????#?函數(shù)?__str__?定義當(dāng)調(diào)用對象的?str()?方法時的返回值內(nèi)容
????#?它最常見的就是在Django管理后臺中做為對象的顯示值。因此應(yīng)該總是為?__str__?返回一個友好易讀的字符串
????def?__str__(self):
????????#?將文章標(biāo)題返回,django后臺管理系統(tǒng)顯示條目名稱
????????return?str(self.author)?+?'-'?+?self.title
創(chuàng)建好模塊后,我們需要將Article模型注冊到blog/admin.py中,這樣才會在后臺管理系統(tǒng)中顯示,
from?django.contrib?import?admin
from?blog.models?import?Article
#?Register?your?models?here.
#?注冊模型
admin.site.register(Article)
另外我們還需要在終端執(zhí)行遷移命令,這樣系統(tǒng)就會自動根據(jù)Article模型中的屬性幫我們在數(shù)據(jù)庫中創(chuàng)建對應(yīng)的表了。
#?進入虛擬環(huán)境后執(zhí)行以下命令
python?manage.py?makemigrations
python?manage.py?migrate
完成上述設(shè)置后,我們完成了模型的創(chuàng)建和注冊,以及遷移映射到數(shù)據(jù)庫,接下來我們可以啟動程序后直接瀏覽器訪問http://127.0.0.1:8000/admin,如果需要登錄,就直接用之前創(chuàng)建的admin賬號登錄即可,登錄之后我們可以看到我們新建的文章管理模塊。
點擊進入文章管理模塊,我們可以對文章進行增刪查改的操作,默認(rèn)是空的,下面我已經(jīng)新增了一篇。
我們可以點擊增加 文章管理,就可以新建一篇文章了,我們選擇作者(和系統(tǒng)中的user是聯(lián)系起來的,所以只能直接選擇),輸入文章標(biāo)題、文章概要、文章內(nèi)容,天后點擊保存即可,也可以點擊保存并增加另一個或者保存并繼續(xù)編輯。
保存后,會自動跳轉(zhuǎn)到文章管理頁面,顯示目前數(shù)據(jù)庫中所有的文章,以列表顯示。
隨便點擊一篇,就可以進入到對應(yīng)文章的編輯界面了,可以對內(nèi)容進行修改或者刪除等。
歡迎大家點贊、在看、轉(zhuǎn)發(fā)支持,點擊在看,下次可以第一時間收到公眾號推文~
本文為付費專欄,每周更新1-2篇,利用Django帶大家一起實現(xiàn)個人博客,最后也會上線。
如果是對Django感興趣的初學(xué)者可以購買,如果你對Django已經(jīng)有所了解了,那我不建議你付費,你可以選擇后面你感興趣的、更深層次的章節(jié)進行付費,如果需要的話。
閱讀到這里的都是真想學(xué)習(xí)Django的學(xué)習(xí)者,我為大家準(zhǔn)備了一個Django學(xué)習(xí)交流群(付費,目前直接購買本系列任意一篇文章即可加入),加入方式如下:
