项目示例 使用Mysql数据库完成一个MVT设计的图书英雄案例

ORM框架

O是object,也就类对象的意思,R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思,M是mapping,是映射的意思。在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据。ORM框架还有一个功能,它可以根据我们设计的类自动帮我们生成数据库中的表格,省去了我们自己建表的过程。
django中内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表的增删改查操作

在MVC框架中的Model模块中都包括ORM,对于开发人员主要带来了如下好处:

  • 实现了数据模型与数据库的解耦,通过简单的配置就可以轻松更换数据库,而不需要修改代码。
  • 只需要面向对象编程,不需要面向数据库编写代码。
  • 在MVC中Model中定义的类,通过ORM与关系型数据库中的表对应,对象的属性体现对象间的关系,这种关系也被映射到数据表中。
    Django框架中ORM示意图如下:


创建项目test4

进入虚拟环境py_django

在用户目录下/pytest目录下创建项目test4

打开test2/settings.py文件,找到DATABASES项,默认使用SQLite3数据库


修改为使用MySQL数据库,代码如下:

将引擎改为mysql,提供连接的主机HOST、端口PORT、数据库名NAME、用户名USER、密码PASSWORD。

注意:数据库test2Django框架不会自动生成,需要我们自己进入mysql数据库去创建。如图:


进入test4目录,创建应用booktest。

再使用mysql数据库时就会出现错误,把数据库切换成了mysql,需要安装pymysql模块之后,Django框架才可以操作mysql数据库。安装命令如下

安装成功之后,在test2/init.py文件中加上如下代码:

将应用booktest注册到项目中:打开test2/settings.py文件,找到INSTALLED_APPS项,加入如下代码:


定义模型类

模型类被定义在"应用/models.py"文件中,此例中为"booktest/models.py"文件。
模型类必须继承自Model类,位于包django.db.models中。
提示:对于重要数据使用逻辑删除。

1.打开booktest/models.py文件,定义模型类如下

2.迁移

生成迁移文件。

表bookinfo结构如下:


默认值并不在数据库层面生效,而是在django创建对象时生效。

表booktest_heroinfo结构如下:


Django框架会根据关系属性生成一个关系字段,并创建外键约束

测试数据

booktest_bookinfo表中插入测试数据:

booktest_heroinfo表中插入测试数据:

运行结果如下:


定义视图

打开booktest/views.py文件,定义视图代码如下:

配置url

打开test2/urls.py文件,配置url如下:

在booktest应用下创建urls.py文件,代码如下:

创建模板

在Django中,将前端的内容定义在模板中,然后再把模板交给视图调用,各种漂亮、炫酷的效果就出现了。
打开test2/settings.py文件,配置模板查找目录TEMPLATES的DIRS。

为应用booktest下的视图index创建模板index.html,目录结构如下图:


模板代码如下:

运行

浏览器输入网址


但此时点击图书列表并没有反应
所以接下来,我们要完成---->点击这本书,接下来显示这本书里所有的英雄

查看

编辑视图views.python,添加如下代码:

模板下新建HTML文档detail,添加如下代码:

将index中超链接导入携带book.id,连接到detail
更改代码:

在booktest应用下urls.py文件,添加代码如下:

运行结果如图:点击


如下


增加/删除

编辑视图views.python,添加如下代码:

模板下新建HTML文档index2,添加如下代码:

在booktest应用下urls.py文件,添加代码如下:

运行结果如下:

点击创建

点击删除