上一篇:Django教程02-使用模板templates
下一篇:Django教程04-Models的常用操作
1.數(shù)據(jù)庫(kù)的注冊(cè)
首先要在settings.py文件進(jìn)行數(shù)據(jù)庫(kù)的設(shè)定
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'test', # 數(shù)據(jù)庫(kù)名稱,如果使用sqlite3,則輸入數(shù)據(jù)庫(kù)文件路徑,如'/home/django/mydata.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': 'admin', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
默認(rèn)情況的設(shè)置如下
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
2.在app的models.py文件中創(chuàng)建model子類
from django.db import models
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=30)
content = models.CharField(max_length=500)
def __str__(self):
return self.title
3.然后在settings.py中注冊(cè)你的app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'home',#這個(gè)是自己要注冊(cè)的app
]
4.驗(yàn)證你的model設(shè)置
python manage.py check
5.通過(guò)model類定義來(lái)創(chuàng)建數(shù)據(jù)庫(kù)表
1)python manage.py的相關(guān)命令
- migrate: 用于執(zhí)行遷移動(dòng)作
- makemigrations: 基于當(dāng)前的model創(chuàng)建新的遷移策略文件
- sqlmigrate: 顯示遷移的SQL語(yǔ)句
參考:Django 1.7 新數(shù)據(jù)遷移工具 (migrations) 的使用# Django 1.7 新數(shù)據(jù)遷移工具 (migrations) 的使用
2)針對(duì)具體應(yīng)用
上述的三個(gè)命令,都可以指定具體的app和實(shí)例
例如:
python manage.py migrate home # 針對(duì)home應(yīng)用進(jìn)行遷移
python manage.py migrate home 0002 #針對(duì)home應(yīng)用的0002實(shí)例
home應(yīng)用的0002實(shí)例,對(duì)應(yīng)home文件夾——migrations文件夾下,0002_****.py
3)創(chuàng)建表格
首先,產(chǎn)生home應(yīng)用的migration文件
python3 manage.py makemigrations home

執(zhí)行該命令后,在home應(yīng)用的文件夾下,生成migrations文件夾,并生成第一個(gè)遷移實(shí)例0001_initial.py
然后,執(zhí)行遷移命令
python3 manage.py migrate home

執(zhí)行0001_initial.py,執(zhí)行后,數(shù)據(jù)庫(kù)中生成home_Article表格,也就是對(duì)應(yīng)home應(yīng)用的Article模塊。
顯示sql相關(guān)操作
python manage.py sqlmigrate home 0001

6.初始化表格數(shù)據(jù)
有兩種方式可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)表格的初始化
(1)利用shell
python manage.py sqlshell
進(jìn)入sql數(shù)據(jù)庫(kù)的命令行管理模式。

from home.models import Article
從home應(yīng)用的models.py中導(dǎo)入剛定義的Article子模型,后續(xù)即可進(jìn)行相關(guān)賦值操作
def initdata():
data = [('春節(jié)放假通知','春節(jié)放假通知內(nèi)容'),('習(xí)近平訪問(wèn)美國(guó)','習(xí)近平訪問(wèn)美國(guó)詳情'),('96臺(tái)海危機(jī)','96臺(tái)海危機(jī)詳情')]
for d in data:
p = Article(title=d[0],content=d[1])
p.save()
initdata()
可以把這一過(guò)程放在一個(gè)文件中實(shí)現(xiàn):
initdb.py
from mysite.wsgi import * #需要通過(guò)這個(gè),導(dǎo)入Django的一些初始設(shè)置,否則會(huì)失敗
from home.models import Article
def initdata():
data = [('春節(jié)放假通知','春節(jié)放假通知內(nèi)容'),('習(xí)近平訪問(wèn)美國(guó)','習(xí)近平訪問(wèn)美國(guó)詳情'),('96臺(tái)海危機(jī)','96臺(tái)海危機(jī)詳情')]
for d in data:
p = Article(title=d[0],content=d[1])
p.save()
if __name__=='__main__':
initdata()
把該文件命名為initdb.py,放在項(xiàng)目根目錄中,然后python initdb.py執(zhí)行。
(2)利用migration
在應(yīng)用的migrations文件夾中,新建文件0002_initialdata.py
# -*- coding: utf-8 -*-
# Generated by Django 1.11.3 on 2017-07-02 02:59
from __future__ import unicode_literals
from django.db import migrations, models
def initdata(apps, schema_editor):
Article = apps.get_model("home", "Article")
data = [('春節(jié)放假通知','春節(jié)放假通知內(nèi)容'),('習(xí)近平訪問(wèn)美國(guó)','習(xí)近平訪問(wèn)美國(guó)詳情'),('96臺(tái)海危機(jī)','96臺(tái)海危機(jī)詳情')]
for d in data:
p = Article(title=d[0],content=d[1])
p.save()
class Migration(migrations.Migration):
dependencies = [
('home', '0001_initial'), #依賴關(guān)系的定義。如果沒(méi)有,會(huì)出現(xiàn)沖突。
]
operations = [
migrations.RunPython(initdata),
]
執(zhí)行遷移命令:
python manage.py migrate home 0002

執(zhí)行完成后,數(shù)據(jù)表結(jié)果如下:
