首先,我们来说一下项目(project)和应用(app)的区别
项目(project)是一个网页站点配置和应用(app)的集合。
应用(app)是一个用来完成特定功能的网页应用,比如博客应用、在线投票应用等等。一个模型就对应着一个应用。
1、启动一个应用(app),让我们来启动一个博客应用(blog)
python manage.py startapp blog
用tree blog命令来看一个blog目录的文件结构
blog
├── admin.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
2、创建模型
首先我们来想一下一个博客需要哪些必要的元素,博客标题(title)、正文(content)、发布时间(published_time)、创建时间(created_time)、创建者(user)
然后我们将它们转换成python语言。别忘了,django是一个基于Python框架。下面就是具体代码:
cd blog
编辑models.py文件
from django.db import models from django.contrib.auth.models import User from django.utils import timezone # Create your models here. class Blog(models.Model): user=models.ForeinKey(User) title=models.CharField(max_length=200) text=models.TextField() created_time=models.DateTimeField(default=timezone.now) published_time=models.DatetimeField(blank=True,null=True)
每个模型都是由一个模型类(class)来实现的,所有模型类都继承自models.Model,每个模型类都有若干个类变量,每个变量又表示着在数据库中存储的一个字段(field)。每个字段(field)都是一个字段类的实例。
3、激活模型
要激活一个模型需要做这么几件事:
- 安装模型
进入到myproject目录,编辑settings.py,在INSTALLED_APPS处添加模型blog
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', )
- 数据库设置
继续编辑settings.py文件,在DATABASES处修改成如下:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'blog', 'USER':'tmyyss', 'PASSWORD':'password', 'HOST':'localhost', 'PORT':'3306', } }
NAME:模型名称
USER:数据库用户
PASSWORD:数据库用户的密码
HOST:主机 ,因为是开发环境,所以就填localhost
PORT:数据库通信端口。
修改完成后保存文件。
- 创建数据库用户和数据库
首先创建一个数据库用户tmyyss
以root登录数据库
sudo mysql -ppassword
然后执行
mysql> grant all privileges on *.* to 'tmyyss'@'localhost' identified by 'password'; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
这样就创建了一个tmyyss用户,密码是password
接着,我们来创建一个blog数据库。
mysql> create database blog; Query OK, 1 row affected (0.00 sec)
这位我们就创建了一个blog的数据库。
- 将python语句的模型sql语句并执行
tmyyss@ubuntu:~/python/django/myproject$ python manage.py makemigrations Migrations for 'blog': 0001_initial.py: - Create model Blog
tmyyss@ubuntu:~/python/django/myproject$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, blog, contenttypes, auth, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying blog.0001_initial... OK
Applying sessions.0001_initial... OK
好了,到目前为止,我们初步的将模型创建完成了。