iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 13
1
Modern Web

🍐放學後的網頁開發系列 第 13

[Day13] 柚子放學後的網頁生活 - Django Create/Read

上一堂我們成功migrate model到我們的程式,如果有跟到的話XD
今天要跟大家講的是資料庫在Django裡的操作
在這之前小補充個

資料庫 ( Database,DB )

儲存資料的方式

可以用來儲存電子檔案,想像成一個倉庫,裡面分成很多類的寶盒(Table),寶盒裡面有有序(Column)的排列。
User建立完DB後,可以對其中的Data執行四個主要動作,分別是Create (新增)、Read (讀取)、Update (修改)、Delete (刪除),常簡稱為 CRUD

知道DB後,要實際對他操作囉

Django Shell

待會我們需要藉由Django的Shell來操作,在這之前我們先安裝IPython,可以說是強化版的 Python cmd,pip 是 Python 程式語言的套件管理程式,我們用他來安裝 ipython

pip install ipython

安裝成功看見 Successfully installed 的資訊就可以來測試 Run 看看

python manage.py shell

成功啟動後可以看到不一樣的介面,如下圖

成功後,我們先將等等要操作的model Teacher import 進來

from classes.models import Teacher

如果import成功,這時候什麼都不會回報,就可以繼續輸入 In[2]

那我們就先來Create(新建)一個物件,物件命為David,今年17歲,他的專長技能是Django

Teacher.objects.create(name='David',yrsold='17',skills='django')

成功建立後,我們對資料庫Read,檢查是否成功

Teacher.objects.all()

呼叫所有物件,沒意外的話會顯示

<QuerySet [<Teacher: Teacher object>]>

那從所有物件呢,我們要呼叫第一個(因為現在只有存我們剛剛建的)
這邊的index就很直覺的跟我們平常操作array一樣

Teacher.objects.all()[0]

out會是

<Teacher: Teacher object>

那我們成功抓到這個物件後,檢查他的name

Teacher.objects.all()[0].name

這邊看到成功回報 David 就是 Create 成功囉 !
以上三步附圖:

如果資料很多怎麼辦 ?

對的,總不可能說請你們記住每個Object的index,所以呢,這邊有幾個小撇步

Get

如果我們要找的資料是我,name為David,可以很直覺的

 Teacher.objects.get(name='David')

這時候就會回報那個Object給你,那看你要的是 name, yrsold, skills 就是一樣再後面用object呼叫的方式呼叫

filter

下一個呢,我個人認為麻煩一些,filter中文為過濾,濾出你想要的資料

 Teacher.objects.filter(name='David')

但這邊要注意的是,回報的資料型態跟Get不一樣

<QuerySet [<Teacher: Teacher object>]>

怎麼又是QuerySet(List的概念),那我們剛剛已經知道怎麼處理了

 Teacher.objects.filter(name='David')[0].skills

就可以 print 出 David 的技能囉 !
好像篇幅有點長了,那下一篇再跟大家如何Update資料和Delete

最後檢視今天學會了什麼

  • 安裝使用Ipython、Django Shell
  • 成功Create一個object
  • 成功以all、get、filter完成Read

下課囉 ~ 請鎖定 柚子放學後的網頁生活


上一篇
[Day12] 柚子放學後的網頁生活 - Django Model
下一篇
[Day14] 柚子放學後的網頁生活 - Django Update / Delete
系列文
🍐放學後的網頁開發30

尚未有邦友留言

立即登入留言