在django的框架設計中采用了mtv模型,即Model,template,viewer
Model相對於傳統的三層或者mvc框架來說就相當對數據處理層,它主要負責與數據的交互,在使用django框架設計應用系統時,需要注意的是django默認采用的是orm框架中的codefirst模型,也就是說開發人員只需要專注於代碼的編寫,而不需要過多的關注數據庫層面的東西,把開發人員從數據庫中解放出來
django會根據Model類生成一個數據庫鏡像文件,然后再使用該鏡像文件生成數據庫,同時該文件將記錄與數據庫同步版本的變化,所以在使用django進行開發時不要手工去修改數據庫,這樣會造成django框架的版本記錄不正確,從而無法正確的同步數據模型與數據庫的內容
django生成的鏡像文件內容如下:
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('web', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='userinfo',
name='sex',
field=models.BooleanField(default=True),
preserve_default=False,
),
]
以上內容為生的一一個版本的鏡像,內容記錄了對model所在的app的記錄,以及執行的動作,如上面的鏡像文件記錄為對web的app中的model增加了一個名稱為sex的字段,字段類型為Boolean,默認為True
自動將app中的Model進行同步需要setting.py中設置INSTALLED_APPS,將需要同步的app注冊到系統中,系統在運行同步命令的時候將會把所有注冊到系統中的app中的Model數據與數據庫進行同步處理
同時需要注意一個問題,即app一定要位於工程目錄之下,否則同步的時候將會提示沒有這個app之類信息
在進行同步之前要做幾樣檢查工作:
一:數據庫連接配置:setting.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': '434944800',
'HOST': 'localhost',
'PORT': '3306',
}
}
二:將app注冊到工程項目中
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'web',
]
三:編寫Model
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class userInfo(models.Model):
username=models.CharField(max_length=100)
passwd=models.CharField(max_length=20)
sex=models.BooleanField()
類userinfo即相當於數據表名,django實際生成的表名為web_userinfo,由於對數據庫的操作需要借助於django,所以model類需要繼承自models.Model
准備工作完成后在終端進行工程所在目錄中
輸入命令:python manage.py makemigrations
生成鏡像文件
python manage.py migrate
同步到數據庫
執行以上兩條命令將對Model和數據庫進行同步
總結:
一:配置數據庫
二:app注冊到工程
三:編寫model
四:執行命令同步
對model做調整后只需要重復執行第四步即可同步數據庫