使用Django 2.0构建Python Restful 服务:二)创建和生成数据模型

在上一章,我们完成了一个Django环境的搭建的安装。本章开始,我们着手构建我们基于Django的Restful服务,创建一个存储和记录电影信息的数据模型。

在现代动态网站中,底层数据库是每个网站的标配,也是绝大多数网站的唯一的数据来源,其用于存储网站所需的各种数据表及其表内的数据。

在Django中,模型用来作为数据库在框架中的表示,一般而言,一个模型就对应于数据库中的一张唯一的数据库表。

Django的模型有以下特点:

  • 每一个模型都是继承于django.db.models.Model的子类;
  • 每一个模型的属性都表示为数据库表中的字段(等同于SQL中的数据定义语言DDL);
  • 每一个模型的方法都用于对数据库表的操作(等同于SQL中的数据操作语言DML);

具体的Django模型使用方法,大家可以参考Django官方文档。下面,我们在项目中创建并生成一个模型。

2.1、定义一个模型

打开应用movies目录下的models.py文件:

在文件内定义一个模型类Movie,代码如下所示:

class Movie(models.Model):
    name = models.CharField(verbose_name='电影名称',max_length=30)
    movie_cate = models.CharField(verbose_name='电影分类',max_length=30,blank=True,null=True)
    release_date = models.DateField(verbose_name='上映日期')
    viewed = models.BooleanField(verbose_name='观看状态',default=False)
    created = models.DateTimeField(verbose_name='创建时间',auto_now_add=True)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = '电影'
        verbose_name_plural = verbose_name
        ordering = ('name',)

在此,我们为这个名为Movie的模型(数据库表),定义了5个属性(字段),分别是电影名称、电影分类、上映日期、观看状态和创建时间。接下来,我们生成这个模型。

2.2、生成一个模型

在Django中,一个模型从定义完成到在数据库中创建(或修改)数据库表,需要两个步骤:

  • 创建模型的迁移(生成模型中的变动)
  • 执行模型的迁移(根据模型中的变动在数据库中执行相应的操作)

这两个步骤分别通过django的manage.py提供的makemigrations命令和migrate命令来实现。

下面我们通过这两个命令来生成一下刚刚定义好的模型。

2.2.1、创建模型的迁移

在vieturalenv虚拟环境下的项目目录下打开命令行窗口:

在光标下输入以下命令:

python manage.py makemigrations movies

其会提示我们模型中将会创建一个Movie模型:

2.2.2 执行模型的迁移

接着,我们就可以使用migrate命令来执行模型的迁移了,同样在光标下输入以下命令:

python manage.py migrate

因为我们第一次执行模型的迁移,Django项目中默认的很多模型,比如认证模型、用户模型、会话模型等也在本次模型迁移中被创建了:

执行模型的迁移

2.3、查看模型

执行完模型的迁移,我们的数据库中就会创建对应的数据库表。在本次项目中,为了方便操作和演示,我们没有自定义数据库,所以使用的是默认的sqlite3数据库。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

如果有需要,大家可以自行选用其他的数据库。这时候,在项目目录下,可以发现已经存在一个sqlite3数据库的文件:

django默认的sqlite数据库

我们可以通过很多相关的软件打开sqlite数据库文件,在此我们使用的是SQLite Expert的个人版。

首先在官网上(http://www.sqliteexpert.com/download.html)下载安装好:

启动之后,选择打开我们项目下的db.sqlite3文件:

左侧的db下,显示的就是我们这个db.sqlite3数据库中所包含的数据库表,可以发现我们在movies应用下定义的movie模型也在其中。点击movies_movie表,右侧的内容栏会出现这个表的信息:

现在表中没有数据,但是我们可以看到这个表的字段,除了我们定义的5个字段外,还有一个默认的自增id字段。通过这个工具,我们可以在Django admin界面之外很方便的查看和管理数据。

2.4、本章小结

在本章,我们介绍并使用了Django的模型。通过模型类来定义数据模型,并通过迁移生成模型数据表。最后利用sqlite的可视化管理工具查看了生成的模型数据表。

猜你也喜欢

发表评论

邮箱地址不会被公开。