接口测试平台代码实现16:吐槽功能后台实现+orm初识

2022-05-19 08:34:15 浏览数 (1)

好,我们接上节课。

我们后台已经成功获取到了前端的 吐槽内容。那么我们本节课要做什么呢?

1. 新建一个数据表,用来存放吐槽内容,每条吐槽内容是一条记录

2.在后台把用户的吐槽内容写入到表里

首先来学习一下django的 自带数据库sqlite3。

django 的自带数据库在哪呢?

上图的db.sqlite3 就是我们自带的。你看看自己项目是不是都有。

我们的前文提到的用户表 其实也在这个数据库内,它是个轻量级的mysql。

对于我们测试平台而言,最适合不过了。当然我们也可以在settings.py中设置连接其他真正的mysql数据库。

那么我们如何操作数据库呢? 这里有俩种方法!

1. 通过传统的sql语句,我们连接上sqlite3数据库,然后用命令创建表,然后在后台函数里,比如这个吐槽内容写入的函数里,调用python的连接mysql的库函数,进行连接,输入用户名,密码,端口,地址,然后连接。然后上传sql语句,然后获取返回结果,最后断开连接。

优点:理解起来简单,不用学习新技术。可以自己封装成各种工厂函数。发挥空间大。

缺点:写起来麻烦,性能较低,风险大,如果因为疏忽/报错 导致连接没有及时断开,很容易造成线程池最大数超出。后期用起来麻烦。

2.通过orm映射 来操作数据库。就是我们不用在关心 连接数据库/断开 这种事,而是专注于参数字段本身。使用起来就是调用一个类而已,久而久之完全忘掉了对象是一个数据库这种事。

优点:使用方便/简单 稳定 快速 高效,orm会帮你处理连接问题,你完全不用在担心这个事了。

缺点:需要学习新技术,需要一定学习成本。

在本教程呢?我们选择第二种,orm。简单来说:就3步

  1. 自己写一个类,当作一个数据库表
  2. orm会真的把这个类 变成一个数据库中真实的表
  3. 你操作这个类即可,orm会自动帮你去调用操作真实的数据库表

4.我们就要好好学习如何操作这个类,这个类都有什么自己的方法呢?

首先让我们先写一个这个类,按照表的设计写,

打开models.py,它在

可以看到,空无一物:

让我们先写一个类,作为吐槽内容存储表。

表明我们最好有点特殊风格和标准,以免我们后续调用时分不清这是个orm映射类 还是普通的类,我就在前面写DB_。必须继承models.Model,这样django才会把它当作orm的映射类来真实的去操作sqlite3。这里我们起名教

类下面我们要写什么呢?我们要写类变量 。类变量会被orm当作是表内的字段。那么吐槽内容都有些什么字段呢?

1.id 任何表的id都不需要我们亲自写,都是自动生成并且自增 主键不唯一

2.user 吐槽人的名字

3.吐槽内容

4.吐槽时间

好让我一个一个写:

按照此格式,调用models下的各种方法定义字段。括号内就是约束条件。CharField 是字符串。DateTimeField是时间。max_length是最大允许长度,null=True ,是允许为Null, auto_now ,是自动填入时间无需我们手动填入了。关于这里其实有几十种不同的格式之多,我们可以百度orm 字段方法来获取其他的,不过我们目前讲的只用到来字符串最多。

好接下来我们还要再给它 加一个 函数,叫做__str__

这个函数用来干啥的呢?原来是我们在admin后台 想要操作数据库,里面的具体记录列表 并不会像mysql的客户端一样,显示所有内容,是需要我们自定义的去设计要显示什么,理解起来就像 我们要在这个__str__函数内设计一个view视图。

按照这个瓢画:

return self.text 就是创建一个视图,让我们之后在后台管理平台,这个表的内容时,先显示text 也就是吐槽内容,然后我们点进去就可以看到全部内容了。

str(self.ctime)就是它顺便在后面显示创建的时间。为啥不看用户名呢?因为这并不是我们所关心的,要想看可以到时候点进去边界页面看所有详细信息。

现在我们写完了这个类,已经算是完成一半了。接下来,要想后台管理平台可以看的到这个吐槽表 并且可以控制,需要进行admin注册。

admin注册:

打开admin.py:

一样空空如也:

我们这里必须手动加上一句,从我的app里models 中导入所有类*

然后我们进行注册 刚刚的吐槽表:

就上图这一句话:即可完成注册。admin.site.register() 是注册用的函数,里面写类名,注意是类名,并不是类本身,所以不要加()

到这里我们 已经完成大半。接下来就是用命令,操作manage.py这个管家,让他去按照我刚刚写的这个类 去操作sqlite3数据库吧。要是已经有这个吐槽表就更新,没有就创建。

这里需要用到的俩个命令,我们在前文已经用过了,就是在创建超级管理员的时候的俩条命令:同步表结构并生效:makemigrations 和 migrate

然后我们保持服务器运行状态,如果它因为之前报错已经停止了,我们就重启。确定重启没报错,我们就算成功的创建了这个吐槽表并成功用orm去映射完成。

接下来我们打开views.py,去写这个pei() 吐槽函数:

我们已经拿到了tucao_text,就是吐槽内容,接下来就是写入到表DB_tucao里。

这里就要用到普通python类的方法了。

不过要在页面最上方 导入models.py中的所有类!

然后我们在pei函数中,写如下语句:

DB_tucao是我们的类,它下面有个objects的方法,内部还有子方法create,create方法就是创建数据库记录,参数就是我们的字段内容,不过我们本来有4个字段:id user text ctime ,因为id为自动创建不用我们操心,ctime也是自动填入也不用我们操心,所以我们这里只写user 和 text即可。user就是吐槽的用户名,我前文提到过,所有请求的信息包括请求者的登陆用户名都存放在reqeust这个参数中,它里面的user.username就是请求的用户名了。我们拿出来当作吐槽表的用户名,tucao_text就是吐槽内容,赋值给text。为了不写错,我们可以打开models.py再确认一下有没有拼写类错误:

确认完毕,没有问题。

最后给这个pei函数加个返回,别让他空手返回给前端,起码告诉前端页面,我写入成功了。

这里之所以返回空字符串,是因为我们前端页面写死了,无论返回什么都弹窗说吐槽成功!

好让我们切换到浏览器或pycharm以外的其他软件。等待django自动重启,确认不报错。我们刷新主页,发一条吐槽试试看:

显示没问题成功了。我们作为管理员,我们要经常去后台看看 用户的吐槽。所以我们点击左侧菜单的后台按钮,进入后台,看下后台现在长什么样了!

可以发现,我们的app :Myapp 也展示了,它下面的表 D b_tucaos也出现了,这里不要纠结它显示的效果,它会默认把你表明首字母大写空格,最后加个s的。

我们点击Db_tucaos 表进入看看 我们刚刚吐槽的内容记录到底有木有!

可以看到,成功的存入进来了。这里为啥会显示吐槽内容呢?那是因为我们models.py中的__str__函数写的是 return self.text str(self.ctime) ,如果我们改成return self.id 那这里就显示id了,不过我们关心的是吐槽内容,更想一目了然的看到所有吐槽,所以我们返回self.text str(self.ctime)。当我们真的需要进入看看是谁发的吐槽的时候,我们只需要点进去,看看user是谁即可。

点进去的其实是这条记录的边界页面,我们可以在这里直接进行编辑,当然这没有意义。

可以看到 吐槽的用户名已经写在了这里。

好了到这里我们就完成了整个 吐槽功能。也算是我们为之后啃项目管理模块,打下了一点基础。

再回顾下本节课的知识:我们学习了如何建表,如何注册到admin后台,如何往表里面写入数据。

下节预告:帮助页面,主要训练前端的设计和css js等。继续打怪升级。

喜欢的欢迎点赞和分享,日更不易。

0 人点赞