昨天我們學會建立靜態網頁與檔案放置,並成功用view顯示後,今天來了解後端囉!
先說說 Model 有什麼好處呢
資料庫轉換相當方便。Django用的後端資料庫系統為 SQLite ,我們可以用SQLite輕易轉換到熟悉的 MySQL、或是昂貴的 Oracle 等
那我們先找找Database相關操作在哪裡 ?
# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
我們可以在settings.py看到這幾段Database的default
這邊再為大家做個小提醒
如果原本django安裝是用venv安裝的,要記得run起來哦
django_venv\Scripts\activate
有成功看到小括號在前面才是開啟成功
接著再執行
python manage.py runserver
才會run起來哦,之前我就常常耍笨忘記開venv,希望大家記得啦
知道Models的用途後,我們就直接來看看Models的設定
Models 放置於 classes/models.py
我們引用在第一課時介紹ORM的那段
class Teacher(models.Model):
name = models.CharField(max_length=20)
yrsold = models.DecimalField(max_digits=3,decimal_places=0)
skills = models.CharField(max_length=50, blank=True)
我們給了Teacher這個 model 三個屬性有name, yrsold, skills 來記錄每個老師
Col name | Field type | Explain |
---|---|---|
姓名 (name) | CharField | max_length=20 (長度限為20) |
年齡 (yrsold) | DecimalField | max_digits=3,decimal_places=0 |
專長 (skills) | CharField | max_length=50, blank=True |
DecimalField 的參數為
blank = True表示這格可以為NULL
有些老師不一定有專長,但有教育熱忱,那就別要求吧!
若對其他Field type想更了解的話這邊有說明https://www.webforefront.com/django/modeldatatypesandvalidation.html
那我們在settings.py撰寫完成後,也要真的執行Database
那此時我們回到 Command Line 做一個 migrate的準備
依照Model的修改刪除建立一個新的migration記錄檔案
python manage.py makemigrations
如果成功的話,登愣 !
就會看到顯示create model Teacher,我們的model成功建立了
但這樣結束了嗎? 錯
我們建立了這model,但還要真正的migrate上去,更新DB中的資料表
python manage.py migrate
如果沒有出錯的話,可以看到Apply ok的reply就代表成功囉
確認建立成功後,可以回到目錄下會發現多一個migrations的資料夾,裡面0001_initial.py被加進來囉
那下一章就要開始和大家分享怎麼藉由ORM來操作DB~~