前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试平台代码实现16:吐槽功能后台实现+orm初识

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

作者头像
我去热饭
发布2022-05-19 08:34:15
3660
发布2022-05-19 08:34:15
举报
文章被收录于专栏:测试开发干货

好,我们接上节课。

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

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等。继续打怪升级。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档