Django学习之创建模型

首先,我们来说一下项目(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

好了,到目前为止,我们初步的将模型创建完成了。

原文地址:https://www.cnblogs.com/tmyyss/p/4367884.html