開始之前我們先簡(jiǎn)單介紹一下Django中的Models
在Django中,一個(gè)Model對(duì)應(yīng)著一張數(shù)據(jù)表,Model以類的方式表現(xiàn),類中包含了當(dāng)前的表中的字段 及 對(duì)數(shù)據(jù)的操作。所以這里我們只需要以創(chuàng)建類的形式即可創(chuàng)建數(shù)據(jù)表,那么我們?cè)诓僮鲾?shù)據(jù)庫(kù)的時(shí)候不需要敲任何SQL語句,只需要對(duì)類和對(duì)象進(jìn)行相關(guān)操作即可。這無疑是給我們的開發(fā)提供了很便捷的方式,那么為什么Django能實(shí)現(xiàn)這么方便的數(shù)據(jù)庫(kù)操作方法呢,當(dāng)然這種方式(框架)不是Django獨(dú)創(chuàng)的,我們稱它為ORM,而且支持ORM的框架遠(yuǎn)遠(yuǎn)不止Django一種。
什么是ORM
Object Relational Mapping,簡(jiǎn)稱ORM? 對(duì)象關(guān)系映射
這種模式是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫(kù)存在的互不匹配的現(xiàn)象的技術(shù)。ORM是通過使用描述對(duì)象和數(shù)據(jù)庫(kù)之間映射的元數(shù)據(jù),將程序中的對(duì)象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫(kù)中。
簡(jiǎn)單來說,它主要實(shí)現(xiàn) 對(duì)象 和 數(shù)據(jù)庫(kù) 之間的映射,封裝數(shù)據(jù)訪問的細(xì)節(jié),開發(fā)中不需要編寫源生SQL語句,給開發(fā)者提供便利。
使用Models創(chuàng)建表 并 從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)
首先我們需要在應(yīng)用目錄下創(chuàng)建models.py ?(如果此文件不存在的話),并在文件中引入models模塊,但Django已經(jīng)幫我們做好了這一步,所以此步驟可以省略。
然后我們?cè)趍odels.py文件中創(chuàng)建一個(gè)以表名命名的類 并 繼承models.Model類(一定要繼承,注意大小寫),在類中創(chuàng)建表的字段 ? (這里表字段就是類中的成員屬性,詳見下圖)

創(chuàng)建完成后,我們先進(jìn)入manage.py的同級(jí)目錄,接著運(yùn)行python manage.py makemigrations命令準(zhǔn)備數(shù)據(jù)遷移,遷移成功后我們可以看到migrations目錄下系統(tǒng)生成的數(shù)據(jù)遷移文件


數(shù)據(jù)遷移準(zhǔn)備成功后,我們?cè)龠\(yùn)行python manage.py migrate命令執(zhí)行數(shù)據(jù)遷移即可,命令執(zhí)行成功的話,我們的表就創(chuàng)建成功啦。

數(shù)據(jù)遷移成功后,你可以通過python manage.py sqlmigrate blog(應(yīng)用名) 0001(數(shù)據(jù)遷移文件的id) 命令查看系統(tǒng)幫我們建表的SQL語句

使用SQLite Expert Professional工具添加一條數(shù)據(jù),當(dāng)然Model也是可以創(chuàng)建數(shù)據(jù)的,這里我主要是為了引出這個(gè)我認(rèn)為比較好用的輕量級(jí)管理工具。。。? ? 官方下載地址? ? ? ? ? 百度網(wǎng)盤下載地址

數(shù)據(jù)創(chuàng)建成功后,我們可以通過Model讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù)

在模板輸出數(shù)據(jù)

然后就可以在頁面中看到我們的輸出啦
