一個(gè)好的項(xiàng)目數(shù)據(jù)庫管理后臺是必須的摸柄,今天代碼君教大家搭建Django網(wǎng)站后臺塘幅,當(dāng)然做網(wǎng)站后臺的前提是需要有Python以及Django的開發(fā)環(huán)境尿贫,至于如何搭建這些開發(fā)環(huán)境,請查看我的上一篇文章 Mac 基于Python搭建Django應(yīng)用框架,這篇文章的講解是基于上一篇的匾乓,好了又谋,開始進(jìn)入正題
在上一篇文章中我們講解了如何創(chuàng)建一個(gè)網(wǎng)站項(xiàng)目,今天代碼君以搭建一個(gè)個(gè)人博客網(wǎng)站作為例子講解網(wǎng)站后臺的搭建
一咧七、博客網(wǎng)站的創(chuàng)建
-
創(chuàng)建項(xiàng)目
創(chuàng)建項(xiàng)目.png -
生成站點(diǎn)(sites)Model继阻,這兩步驟第一篇有介紹废酷,這里就直接操作了
生成站點(diǎn)Model.png
二澈蟆、數(shù)據(jù)庫配置
-
介紹一下數(shù)據(jù)庫的配置就是在setting里面配置鏈接的數(shù)據(jù)庫,這里系統(tǒng)以及配置好了睹簇,鏈接一個(gè)叫做db.sqlite3的數(shù)據(jù)庫,也許有讀者會問带膀,這個(gè)數(shù)據(jù)庫在哪里垛叨,我怎么沒有柜某,沒關(guān)系,你跑一下項(xiàng)目剂癌,系統(tǒng)就自動生成一個(gè)這個(gè)數(shù)據(jù)庫了翰绊,當(dāng)然django也支持MySQL等其他數(shù)據(jù)庫,這里為了方便講解谐檀,就用系統(tǒng)自帶的
數(shù)據(jù)庫配置.png -
INSTALLED_APPS 這個(gè)參數(shù)是安裝myBlog這個(gè)項(xiàng)目中所有用到的Application桐猬,當(dāng)然我們創(chuàng)建的sites也是一個(gè)Application刽肠,所有也加進(jìn)去,下面這幾個(gè)都是系統(tǒng)自帶的框架惫撰,默認(rèn)安裝
- django.contrib.admin —— 管理站點(diǎn)
- django.contrib.auth —— 認(rèn)證系統(tǒng)
- django.contrib.contenttypes —— 用于內(nèi)容類型的框架
- django.contrib.sessions —— 會話框架
- django.contrib.messages —— 消息框架
- django.contrib.staticfiles —— 管理靜態(tài)文件框架
INSTALLED_APPS 添加完sites到INSTALLED_APPS后需要執(zhí)行下面終端命令, migrate會查看INSTALLED_APPS的設(shè)置厨钻,并根據(jù)myBlog/settings.py文件中的數(shù)據(jù)庫設(shè)置創(chuàng)建任何必要的數(shù)據(jù)庫表
python manage.py migrate
- 之后诞挨,我們運(yùn)行一下項(xiàng)目惶傻,輸入http://127.0.0.1:8000/admin 看一下效果
login.png
三、數(shù)據(jù)庫后臺搭建
- 到登錄頁基本完成一半啦涂佃,接下來就需要?jiǎng)?chuàng)建一個(gè)管理員賬戶用于登錄使用,
python manage.py createsuperuser
-
創(chuàng)建完賬戶就可以去登錄了,效果如下
image.png -
因?yàn)槿渴怯⑽钠Вa君看不慣造烁,想把他改成中文settings.py中將LANGUAGE_CODE 中的'en-us' 改成 'zh-Hans'午笛,這樣看起來是不是舒服多了
image.png
四药磺、創(chuàng)建數(shù)據(jù)庫模型
-
在sites中的models創(chuàng)建數(shù)據(jù)庫表的模型,如下圖癌佩,字段有title围辙、url、body酌畜、create_date,
Model
五桥胞、激活模型
這步很關(guān)鍵,你每次修改model里面的數(shù)據(jù)催烘,都要從復(fù)執(zhí)行這下面這幾個(gè)步驟:
在 myBolg/settings.py 中缎罢,修改INSTALLED_APPS,引入要用到的Application舰始,我們目前只有一個(gè)sites咽袜,已經(jīng)引用過了,所以無需再引用
執(zhí)行終端命令
python manage.py makemigrations
python manage.py migrate
-
將model添加到sites/admin.py里
image.png -
運(yùn)行一下項(xiàng)目萎坷,打開管理界面沐兰,查看效果,然后你就看隨意添加Article內(nèi)容啦 http://127.0.0.1:8000/admin
image.png
image.png
image.png
六、踩坑總結(jié)
-
UnicodeEncodeError: 'ascii' codec can't encode characters
之前模型model中寫了一個(gè)方法 def str(self):這個(gè)是舊版本中用的方法斟叼,Django新版本要換成def unicode(self):春寿, 這樣就解決了字符串傳遞時(shí)出錯(cuò)的問題忽孽,統(tǒng)一編碼為Unicode字符串。 -
OperationalError no such table / OperationalError table sites_article has no column named test
這是一類錯(cuò)誤厘线,就是我之前提醒的出革,我們增加model或者修改models.py里面的代碼后骂束,需要從新執(zhí)行步驟五,步驟五的作用就是更新數(shù)據(jù)庫表的信息展箱,比如你新增model中的一個(gè)字段,沒有更新數(shù)據(jù)庫表攀隔,自然會報(bào)上面的錯(cuò)誤
解決方法:運(yùn)行步驟五的終端命令
python manage.py makemigrations
python manage.py migrate
總結(jié)
今天代碼君教了大家網(wǎng)站后臺的搭建栖榨,可能你看完文章會覺得很容易婴栽,那是因?yàn)榇a君已經(jīng)幫你都踩完坑了,我在寫教程之前居夹,也參考了很多文章,大多數(shù)寫的思路都不是很清晰劫扒,正因?yàn)槿绱耍a君才打算寫這篇教程指引讀者添怔,原創(chuàng)不易贤旷,請覺得有用的讀者為代碼君點(diǎn)個(gè)贊哈~