接口测试平台代码实现27: 项目详情页的导航功能

简介: 接口测试平台代码实现27: 项目详情页的导航功能

如果发生代码问题特别混乱导致无法自主修复的情况,请及时下载项目的打包百度网盘链接,在第25节的末尾。对比代码或者干脆直接覆盖。

言归正传,本节开始设计导航,教程都是属于半学习/半实验的性质。所以我们尽可能多的掌握一些,技多不压身。


我们之前已经成功建立 三个子页面,并且打通了从项目列表页进入后默认进入接口库的链路微信图片_20220617222915.png

接下来就是要 设计一个导航功能,让用户在 三个子页面中可以来回跳转。


关于导航我们有很多设计:

  1. 单纯的三个按钮组合
    微信图片_20220617222928.png
  2. 面包屑导航

微信图片_20220617222937.png

3.简易菜单

微信图片_20220617222947.png

4.导航栏

微信图片_20220617222953.png

实每种实现起来 无非就是超链接。都不难。不过我们这里选择了第四种,考虑到后续我们还会加入其他子模块。所以要做的就是顶部的一整个导航栏

颜色上 这种灰白就可以,不要太明显 抢了中间主要的内容。


截图中的第四种 出自,bootstrap的标准导航组。在这之前,我们需要修改一个之前章节中出现的导入顺序错误的问题。

打开welcome.html,众所周知,这个文件是我们的公共文件,这里除了菜单外,其他所有引入的js/css都会 在任何其他子页面中同样生效。但是我们之前引入的时候,有个顺序出现了错误。

就是

bootstrap.min.js

必须在

jquery-1.11.0.min.js


之后引入才不会报错。

我们在head标签内找到了bootstrap.min.js的引入微信图片_20220617222959.png


然后剪切走这句,粘贴到下面

微信图片_20220617223006.png

这是我们之前的一个小疏忽导致的bug,现在已修复。让我们继续开发导航栏吧:

打开P_apis.html:

添加以下div:微信图片_20220617223013.png

删掉了我们上一节中的那个h2的标题。并把项目名称project_name融合到了新的导航栏中,宽度等css均已设置好,大家先复制到自己代码中。这段代码出自bootstrap的官方教程中的导航栏demo,别问为什么这么写,我只能说人家就是这么设计的,你只要在上面跟着改改就好了。

目前的4个超链接:返回项目列表/接口库/用例库/项目设置

我们要给它们的超链接补全。

注意,这里我用了很多????? ,这些问号应该是什么?应该是放项目id的,所以我们在进入这个页面的时候,其实应该除了带上项目名称外,也要带上项目id 。才能让我们的这些导航真正实现。

我们先把这段代码源码 放出来,大家粘贴好:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<nav class="navbar navbar-default" role="navigation" style="position: absolute;top: 0px;left: 80px;width:-webkit-calc(100% - 200px);z-index: 1">
    <div class="container-fluid">
    <div class="navbar-header">
        <span style="font-size: xx-small" class="navbar-brand" >项目名称:{{ project.name }}</span>
        <a class="navbar-brand" href="/project_list/">返回项目列表</a>
    </div>
    <div>
        <ul class="nav navbar-nav">
            <li class="active"><a href="/apis/?????/">接口库</a></li>
            <li><a href="/cases/?????/">用例库</a></li>
            <li><a href="/project_set/?????/">项目设置</a></li>
        </ul>
    </div>
    </div>
</nav>
</body>
</html>

然后我们要去修改后台views.py中的控制返回各个页面数据的分发器函数:

def child_json(eid,oid=''):

我们本来是要增加项目id的,可是这里我们会觉得后续很可能还会有很多项目内的字段需要传输进来,那么我们为啥不干脆把整个项目本身传给前端呢?

当然可以:修改成如下即可:微信图片_20220617223019.png我们不再只传输一个project_name了。而是改成了把整个project都给前端。

然后我们去修改前端页面:

我们之前使用过project_name 这个参数,不过现在这个参数已经没了,取而代之的是含有整个项目内容的       project

我们再从里面提取任何字段,都后面加个 .  即可。

比如项目名称:project.name

项目id:project.id/微信图片_20220617223025.png


修改好后,我们重启服务刷新页面,看看有没有什么问题:微信图片_20220617223031.png

果然没问题,那么我们继续把project.id填入到各个超链接中吧~微信图片_20220617223039.png

我们刷新页面测试,发现全部可以正常跳转,没有报错。说明成功


这时我们发现了一个问题:

就是跳转到 用例库/项目设置 页面的时候,这个导航就看不到了。那是因为我们仅仅把这个导航放在了 接口库页面而已。


那这个时候我们怎么才能在其他俩个子模块也显示这个导航呢?

这里给大家提供3种思路:

  1. 把这段代码 nav标签,复制到其他俩个子页面中即可
  2. 把这段代码单独做成一个新页面,然后接口列表进入的是这个新页面,新页面在做3个子页面,用来单独展示 接口库/用例库/项目设置

   3.把这段代码放在公共页面welcome.html中,并且控制好显示/隐藏

以上三种思路,第二种最复杂。第一种最简单。

所以我们教程中 就采用最简单的方法,等大家都学完后,可以自己尝试换成其他方法:


粘贴复制开始,把nav标签,复制到其他俩个子页面的html中:P_cases.html/P_project_set.html

然后别忘了 我们还要设置好数据返回,之前我们只给写了接口库返回项目数据的if判断。

打开views.py中的child_json()函数:微信图片_20220617223045.png

别忘了还要修改下面的进入页面的函数:微信图片_20220617223050.png

复制稍作修改,成功后,让我们等待服务重启,刷新页面再次测试:

发现点击其他俩个子页面都没啥问题,可以成功显示导航栏了


但是我们这里也发现了一个小瑕疵。就是这选中深色的表现不对:微信图片_20220617223103.png

比如此时我已经进入了用例库,但是导航上依然显示的是选中的接口库。

其实这点我们不用担心,就是个样式问题而已,没有影响功能。

我们只需要先搞清楚 是什么决定这个选中深色的 即可解决:微信图片_20220617223110.png

其实就是我们的这个导航中的 三个li标签 内的class属性,有没有发现,具有class=active的 就会显示深色?

那么我们只需要在P_cases.html和P_projevt_set.html俩个页面内 把这个class属性分别移动到 对应的 li标签即可:

用例库页面:

微信图片_20220617223116.png

项目设置页面:微信图片_20220617223122.png

好了,我们现在再次刷新页面看看效果?微信图片_20220617223128.png

相关文章
|
21天前
|
人工智能 搜索推荐 Serverless
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
50 7
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
|
1月前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
26 1
|
1月前
|
Java
【Java每日一题】— —第二十一题:编程把现实生活的手机事物映射成一个标准类Phone,并定义一个测试类PhoneDemo测试Phone类的功能
【Java每日一题】— —第二十一题:编程把现实生活的手机事物映射成一个标准类Phone,并定义一个测试类PhoneDemo测试Phone类的功能
36 0
|
2天前
|
人工智能 监控 数据处理
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
12 0
|
16天前
|
算法 安全 Java
java代码 实现AES_CMAC 算法测试
该代码实现了一个AES-CMAC算法的简单测试,使用Bouncy Castle作为安全提供者。静态变量K定义了固定密钥。`Aes_Cmac`函数接受密钥和消息,返回AES-CMAC生成的MAC值。在`main`方法中,程序对给定的消息进行AES-CMAC加密,然后模拟接收ECU的加密结果并进行比较。如果两者匹配,输出&quot;验证成功&quot;,否则输出&quot;验证失败&quot;。辅助方法包括将字节转为16进制字符串和将16进制字符串转为字节。
|
1月前
|
缓存 运维 Serverless
应用研发平台EMAS产品常见问题之测试检查更新没有反应如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
1月前
|
Java PHP 数据库
在护卫神上部署javaWeb项目,已经测试通过
在护卫神上部署javaWeb项目,已经测试通过
10 0
|
1月前
|
测试技术 数据库 Python
python测试代码(二)
python测试代码(二)
19 0
|
1月前
|
机器学习/深度学习 人工智能 监控
视觉智能平台常见问题之体验产品的美颜测试关掉如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
24 1
|
1月前
|
Java 测试技术
单元测试编写可测试代码
单元测试编写可测试代码
19 2

热门文章

最新文章