1. 进入虚拟环境
2. 创建项目books
3. 创建应用
4. 配置数据库
5. 定义模型类
7. 测试数据操作
workon django-python3
2. 创建项目books
django-admin startproject mysite
3. 创建应用
python manage.py startapp polls
#切换到项目路径下
(django-python3) zheng@zheng:~$cd ~/pythonProjects/mysite
(django-python3) zheng@zheng:~/pythonProjects/books$ python manage.py startapp polls
(django-python3) zheng@zheng:~/pythonProjects/books$ tree
.
├── mysite
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-35.pyc
│ │ └── settings.cpython-35.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── polls
│ ├── admin.py
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
└── manage.py
4. 配置数据库
在settings.py中配置DATABASES
默认:sqlite3
配置详情:http://python.usyiyi.cn/translate/django_182/ref/settings.html#std:setting-DATABASES
5. 定义模型类
在这个简单的投票应用中,我们将创建两个模型: Question和Choice。Question对象具有一个question_text(问题)属性和一个publish_date(发布时间)属性。 Choice有两个字段:选择的内容和选择的得票统计。 每个Choice与一个Question关联。6. 生成数据表
编辑polls/models.py
from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): question = models.ForeignKey(Question) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)
1. 激活模型:编辑settings.py文件,将polls应用加入到INSTALLED_APPS中。
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls',#app_name
)
2. 生成迁移文件:根据模型类生成sql语句,只适用于关系型数据库
#可以选择迁徙的app,不写迁徙所有。
python manage.py makemigrations [app_name]
#将要执行的SQL打印在屏幕,输出的具体内容会依据使用的数据库而不同,不运行SQL。
python manage.py sqlmigrate polls 0001
3. 执行迁徙文件,生成数据表
python manage.py migrate
sqlmigrate:命令接收迁移文件的名字并返回它们的SQL语句
makemigrations:告诉Django,已经对模型做了一些更改(在这个例子中,你创建了一个新的模型)并且会将这些更改记录为迁移文件。
migrate:http://python.usyiyi.cn/translate/django_182/ref/django-admin.html#django-admin-migrate
可以运行这些迁移文件并自动管理你的数据库模式 ;
只为INSTALLED_APPS中的应用运行数据库的迁移;
可以不断修改你的模型而不用删除数据库或者表然后再重新生成一个新的。
关于迁徙:http://python.usyiyi.cn/translate/django_182/topics/migrations.html
7. 测试数据操作
1. 进入Django环境,python shell
python manage.py shell
2. 引入需要的包
from polls.models import *
from datetime import *
3. 查询所有
Question.objects.all()
4. 新建
#第一种方式 que = Question() que.question_text = 'question_one' que.pub_date = datetime.now() que.save() #第二种方式 que = Question(question_text = 'question_one',pub_date = datetime.now()) que.save() #第三种方式 Question.objects.create(question_text = 'question_one',pub_date = datetime.now())
5. 查找
q=Question.objects.get(pk=1)
6. 输出:
q.questions_text
7. 修改
q.questions_text='question_two'
q.save()
8. 删除
q.delete()