接口测试平台代码实现12:用户管理系统的后台代码-登录

简介: 上节,我们尝试制作了一个登陆页面前端,有的小伙伴反馈说有点跟不上前端开发这块,这是正常的,而且公众号又不是什么直播课程,是没有跟不跟的上之说,哪怕一周敲出来一节课的内容也无所谓。不过的确前端开发对我们测试来说一直是一块黑洞,很少有人掌握这里的技术,或者说我们做出来的东西有点丑,不过这正常,如果好看的话,基本都去做前端开发了。

 本节课我提前美化了一下登陆页面,毕竟这是公司同事首次进入绕不开的第一印象,打磨的精致一点,会给人整个平台的质量都很高的赶脚。这里直接上优化后的代码和页面了:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试平台登录</title>
    <style>
         body{
            background: url("/static/login.jpg");
            background-attachment: fixed;
            background-size: cover;
        }
        .wqrf_input{
            width: 90%;
            background-color: #d1d0d1;
            border-radius: 50px;
            text-align: center;
            float: right;
            margin-right: 10px;
            height: 30px;
            border: 0;
        }
        span{
            color: #f25e78;
        }
</style>
</head>
<body>
<br>
    <div style="box-shadow: 4px 4px 6px #2a262a;margin-left: -webkit-calc(50% - 150px);width: 300px;background-color: white; opacity:0.8;border-radius: 20px;text-align: center">
        <br>
        <strong><span style="font-size: xx-large;">接口测试平台</span></strong>
        <br>
        <span>欢迎使用</span>
        <br><br>
            <input type="text" class="wqrf_input" placeholder="用户名">
            <br><br>
            <input type="text" class="wqrf_input" placeholder="密码">
        <br><br><br>
        <button style="width: 90%;height: 35px;border-radius: 50px;background-color: #f25e78;color: white;font-size: large;border: 0;box-shadow: 4px 4px 4px #a0a0a0">登 陆</button>
        <br><br>
        <span style="font-size: xx-small">若首次登录,请点击 <a href="">注册账号</a></span>
        <br><br>
    </div>
</body>
</html>

页面展示:微信图片_20220616131435.png

   好了,正片开始,我们本节课要做的是登陆页面的后台代码,也就是 注册和登录。

   先弄个登陆吧:

打开login.html,找到你的登陆button,给它加上一个onclick属性,值为我们要做的js函数名:login微信图片_20220616131443.png

然后在文件底部加上一个script 标签用来存放login函数微信图片_20220616131448.png

在里面写好function login(){}

   小技巧:你输入fun联想出来之后,直接按tab键盘,它就会给你生成一个默认函数,然后你把名字改好就可以了,之前所有前端js出错,无效的,请仔细检查代码,或者加我给我截图 帮你改正细微问题,也可以自己f12打开浏览器调试,点击console,相当于我们执行js函数的命令窗口,查看各种报错然后修复。

   这个函数我们动笔之前,要思考,这个函数要做什么?

  1. 拿到用户名和密码输入框的值
  2. 把这个俩值传递给后端等待验证
  3. 根据验证结果,如果错误,就显示红色报错!嘲讽一下使用者。

   4.如果成功的话,那就轮不到这个函数干啥了,后端直接给返回新的首页了


所以第一步我们要如何拿到用户名和密码输入框的值?

首先要定位,然后拿value,怎么定位?用id最好,那就先给那俩输入框加上id,曾经我们做selenium自动化时候,经常埋怨开发不给加id让我们定位不好办,现在我们也是开发了,切记要养成习惯,加上id,方便我们自己。微信图片_20220616131643.png

然后在login()中 加上如下俩句,变量名可以随便起。获取到了俩个输入框的值,一个是username,一个是password微信图片_20220616131652.png

然后我们可以检验一下 是否正确。

加入alert('弹窗文案')        代码,来显示我们获取到的对不对,微信图片_20220616131656.png

然后我们刷新页面,记住一定要刷新,否则你的改动是不生效的。

然后输入用户名密码随便输入,点击登陆按钮:微信图片_20220616131702.png

微信图片_20220616131707.png

看样子是成功了!

       接下来就是我们要如何把俩个字符串 传送给我们后端了。

这里教一段非常简单好用的发送http请求的代码。

$.get("你的url",{json格式参数},function (ret){收到返回值后可以做的事})

其中的ret,就是你接收的返回值。

   但是这个$ 开头的写法,并不是js的写法,而是jquery的写法。我们直接使用会报错,所以要先下载并引入jquery。微信图片_20220616131936.png

我们想起一件事,就是我们之前下载菜单的时候,那个静态资源里已经有里jquery.min.js 类的文件,所以我们只需要引入即可,这里说一下,我们基本网上下载的资源,都是一整套js/css/jquery等。

   引入:在head标签内加入script标签,注意不要写到style内。

script这次内部夹的是空的,而要给它加入一个src属性,意为引入js

然后就是粘贴这个jquery.min.js的路径,注意一定要以 /static/...开头,前面的的都不要。然后加入type属性,写死为 text/javascript

   之后才算我们引入成功!微信图片_20220616131942.png

 先删除alert();然后加上这个发送http请求的代码:微信图片_20220616131948.png

然后在里面写上 url,参数,返回代码:微信图片_20220616131953.png

其中的url我习惯写的是页面进入的url加_action,大家可以自行设置

俩个参数,按照字典/json格式书写,用英文逗号隔开。最后收到返回值时,直接弹窗 报错文案。 因为如果是正确的话,我们打算在后台时候直接让用户跳转到其他页面比如首页。那么这个登陆页面也就不复存在了。

   然后我们去urls.py中架设好链接对照:微信图片_20220616132004.png

写了个函数名,尽量保持一致,以免后续我们思路混乱。

然后去views.py中新建login_action函数:微信图片_20220616132410.png

然后让我们思考这个函数应该做些什么事?

  1. 获取前端给的 俩个字符串:用户名和密码
  2. 调用django自带的用户数据库,来验证这个用户是否存在并且密码正确
  3. 如果不正确,就随便给前端返回点什么,前端都会弹窗说报错文案
  4. 如果正确,就给用户进行重定向,定到首页:home.html


好,让我们第一步,获取前端数据!

还记得为啥要带这个reqeust参数么,因为我们所有的数据都藏在这个request参数里。

   如下代码可以从中获取:微信图片_20220616132516.png

其中的username/password就是我们刚刚前端页面发http请求时候的俩个参数名字,一定要对应上!否则会说找不到错误。


我们可以尝试一下,在浏览器随意输入用户名/密码,点击登陆,看看后端我们pycharm能否打印成功。保证服务启动中。微信图片_20220616132525.png

点击登陆按钮后,可以看到已经打印好了,这说明我们的前端数据传输链路打通了。虽然后面报错了,但是无需担心,这是因后端函数并没有给前端返回什么,所以报错。一会我们还要继续写呢。

   

   开始继续写验证用户名密码代码:

这里我们必须引入一个django的库,专门验证登陆的。叫做auth。

然后 用我们前端给的用户名和密码,调用这个auth函数,去用户库里查询用户,我们的引用变量自定义为user, 这个auth函数如果在库里找到了这个用户,那么就会给你返回这个用户实体,否则就给你返回None微信图片_20220616132531.png

所以我们接下来就要 判断,这个user是一个用户实体,还是一个None:微信图片_20220616132653.png

我们先来写 如果用户名密码不对,也就是程序走进了else的情况:微信图片_20220616132658.png

这里我们随便返回,哪怕是个空,前端都会弹窗报错,因为我们前端html已经写好了,只要接收到返回值,无论是什么,都弹窗错误文案!当然这里也可以设计成弹窗提示返回值,然后后端返回值我们就要返回 错误文案。也是可以。

   再来写正确的部分:微信图片_20220616132703.png直接重定向/home/首页,我们前面讲过,HttpResponseRedirect函数是重定向浏览器链接的。现在我们试试看吧!

   刷新浏览器,确保服务运行中。输入用户名密码点击登陆!

然后没有任何反应!!!而后端报了一个错!!!微信图片_20220616132710.png那么这个错误是什么意思呢?

我们看最后一句,sqlite3错误,这是我们django自带的数据库,这说明是数据库错误,no such table,翻译过来是 没有这个表,哪个表?auth_user ,就是我们前面总提的 django自带用户表。

   所以我们现在需要生成这个表。

点击pycharm底部的cmd命令后输入Terminal模式,这里输入的是你操作系统的命令,比如mac的ls widows的dir ,确保我们在这个项目根目录下,也就是能看到 manage.py的目录下

   依次输入并回车:

python3 manage.py makemigrations

python3 manage.py migrate

俩句命令

分别是:同步表结构,生效表结构。

请牢记这俩句命令,之后我们自己弄的任何数据库设置/更改,都需要这俩句来让其生效,是一个最常用的命令,面试中很多面试官靠这种超级常用的命令来试出你到底是培训机构书本填鸭出来的,还是真才实学实际经验爆表的高手微信图片_20220616132717.png

然后我们切换换Run,来观察django的输出日志:

然后我们在浏览器再测试登陆功能:微信图片_20220616133014.png

出现弹窗,说明整个链路 全部打通!后端也没有报错。


接下来我们意识到一件事情,就是我们的用户表并没有一个用户是个空的,所以我们无论输入什么用户名都会找不到 从而弹窗。


所以我们下一节就要学习 注册功能!注册1个账号,然后登陆测试登陆成功的情况。

相关文章
|
2月前
|
设计模式 安全 测试技术
【软件设计师备考 专题 】系统实施:程序设计和系统测试
【软件设计师备考 专题 】系统实施:程序设计和系统测试
65 0
|
2月前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
30 1
|
3月前
|
资源调度 测试技术 Linux
一款接口自动化神器—开源接口测试平台Lim(Less is More)
一款接口自动化神器—开源接口测试平台Lim(Less is More)
132 2
|
3月前
|
测试技术
包含用例执行时间的测试报告代码
包含用例执行时间的测试报告代码
|
10天前
|
消息中间件 网络协议 物联网
如何入门做物联网系统压测?
【4月更文挑战第18天】物联网系统在架构、网络模式、通信协议等方面与传统的互联网系统有所区别。因此,传统的性能测试方法不能直接套用到物联网系统中。
87 13
如何入门做物联网系统压测?
|
1天前
|
SQL DataWorks Java
DataWorks操作报错合集之在阿里云 DataWorks 中,代码在开发测试阶段能够成功运行,但在提交后失败并报错“不支持https”如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
13 1
DataWorks操作报错合集之在阿里云 DataWorks 中,代码在开发测试阶段能够成功运行,但在提交后失败并报错“不支持https”如何解决
|
7天前
|
人工智能 监控 数据处理
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
27 0
|
21天前
|
算法 安全 Java
java代码 实现AES_CMAC 算法测试
该代码实现了一个AES-CMAC算法的简单测试,使用Bouncy Castle作为安全提供者。静态变量K定义了固定密钥。`Aes_Cmac`函数接受密钥和消息,返回AES-CMAC生成的MAC值。在`main`方法中,程序对给定的消息进行AES-CMAC加密,然后模拟接收ECU的加密结果并进行比较。如果两者匹配,输出&quot;验证成功&quot;,否则输出&quot;验证失败&quot;。辅助方法包括将字节转为16进制字符串和将16进制字符串转为字节。
|
2月前
|
机器学习/深度学习 API Apache
机器学习PAI常见问题之本地运行深度学习训练和预测的测试代码时报错如何解决
PAI(平台为智能,Platform for Artificial Intelligence)是阿里云提供的一个全面的人工智能开发平台,旨在为开发者提供机器学习、深度学习等人工智能技术的模型训练、优化和部署服务。以下是PAI平台使用中的一些常见问题及其答案汇总,帮助用户解决在使用过程中遇到的问题。
|
2月前
|
缓存 运维 Serverless
应用研发平台EMAS产品常见问题之测试检查更新没有反应如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。

热门文章

最新文章