上一篇:Django教程02-使用模板templates
下一篇:Django教程04-Models的常用操作
1.數(shù)據(jù)庫的注冊
首先要在settings.py文件進(jìn)行數(shù)據(jù)庫的設(shè)定
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'test', # 數(shù)據(jù)庫名稱悔据,如果使用sqlite3,則輸入數(shù)據(jù)庫文件路徑较店,如'/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中注冊你的app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'home',#這個(gè)是自己要注冊的app
]
4.驗(yàn)證你的model設(shè)置
python manage.py check
5.通過model類定義來創(chuàng)建數(shù)據(jù)庫表
1)python manage.py的相關(guān)命令
- migrate: 用于執(zhí)行遷移動作
- makemigrations: 基于當(dāng)前的model創(chuàng)建新的遷移策略文件
- sqlmigrate: 顯示遷移的SQL語句
參考:Django 1.7 新數(shù)據(jù)遷移工具 (migrations) 的使用# Django 1.7 新數(shù)據(jù)遷移工具 (migrations) 的使用
2)針對具體應(yīng)用
上述的三個(gè)命令梯皿,都可以指定具體的app和實(shí)例
例如:
python manage.py migrate home # 針對home應(yīng)用進(jìn)行遷移
python manage.py migrate home 0002 #針對home應(yīng)用的0002實(shí)例
home應(yīng)用的0002實(shí)例揪阶,對應(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ù)庫中生成home_Article表格,也就是對應(yīng)home應(yīng)用的Article模塊于微。
顯示sql相關(guān)操作
python manage.py sqlmigrate home 0001
6.初始化表格數(shù)據(jù)
有兩種方式可以實(shí)現(xiàn)對數(shù)據(jù)庫表格的初始化
(1)利用shell
python manage.py sqlshell
進(jìn)入sql數(shù)據(jù)庫的命令行管理模式逗嫡。
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í)近平訪問美國','習(xí)近平訪問美國詳情'),('96臺海危機(jī)','96臺海危機(jī)詳情')]
for d in data:
p = Article(title=d[0],content=d[1])
p.save()
initdata()
可以把這一過程放在一個(gè)文件中實(shí)現(xiàn):
initdb.py
from mysite.wsgi import * #需要通過這個(gè)株依,導(dǎo)入Django的一些初始設(shè)置驱证,否則會失敗
from home.models import Article
def initdata():
data = [('春節(jié)放假通知','春節(jié)放假通知內(nèi)容'),('習(xí)近平訪問美國','習(xí)近平訪問美國詳情'),('96臺海危機(jī)','96臺海危機(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í)近平訪問美國','習(xí)近平訪問美國詳情'),('96臺海危機(jī)','96臺海危機(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)系的定義吗坚。如果沒有祈远,會出現(xiàn)沖突。
]
operations = [
migrations.RunPython(initdata),
]
執(zhí)行遷移命令:
python manage.py migrate home 0002
執(zhí)行完成后商源,數(shù)據(jù)表結(jié)果如下: