基于python flask的自动化测试平台(一)--模板继承与导航栏构造
模板继承使用的是flask中的模板继承,在基础模板中使用{% block content %}{% endblock %},然后在其他模板中通过
{% extends "base.html" %} {% block content%}
这里为页面模板区域
{% endblock %}
这样就能实现模板的继承,从而在多个页面中引用基础模板,而不需要在每个页面都写同样的代码。
这里导航栏的代码就需要写在基础模板base.html中,因为其他页面都会有导航栏,下面请看代码
先定义app/templates/base.html
<html>
<head>
<script type="text/javascript" src = "{{url_for('static', filename='jquery.js')}}"></script>
<script type="text/javascript" src = "{{url_for('static', filename='bootstrap/js/bootstrap.min.js')}}"></script>
<script type="text/javascript" src = "{{url_for('static', filename='bootstrap/jquery.min.js')}}"></script>
<link rel="stylesheet" type="text/css" href="{{url_for('static', filename='bootstrap/css/bootstrap.min.css')}}">
<link rel="stylesheet" type="text/css" href="{{url_for('static', filename='bootstrap/css/bootstrap.css')}}">
<!--如果页面模板在后台传入了标题,那页面的标题就是(传入标题+ '- 测试平台'),否则就是'测试平台'-->
{% if title %}
<title>{{ title}} - 测试平台</title>
{% else %}
<title>测试平台</title>
{% endif %}
<style>
h2{text-align: center}
a{font-size: 17px}
sub{font-size: 18px}
</style>
</head>
<h2>测试平台</h2>
<!--导航栏的实现是用了bootstrap的navbar-->
<div class="navbar navbar-inverse" role="navigation">
<div class="navbar-collapse">
<ul class="nav navbar-nav">
<li><a class="home" href="#" style="color: white">主页</a> </li>
<li><a class="home" href="#" style="color: white">项目管理</a> </li>
<li><a class="home" href="#" style="color: white">模块管理</a> </li>
<li><a class="home" href="#" style="color: white">用例管理</a> </li>
<li><a class="home" href="#" style="color: white">测试报告</a> </li>
<li>
<div class="btn-group">
<button type="button" class="btn dropdown-toggle" style="margin-top: 7px;font-size: 16px;color: white;background: black" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
UI工具
</button>
<ul class="dropdown-menu" style="background: black">
<li><a href="#" style="color: white">人员新增</a> </li>
<li><a href="#" style="color: white">资格注册</a> </li>
</ul>
</div>
</li>
<li id="right">
{% if not session.logged_in %}
<a class="link" href="#" style="color: white">登录</a>
{% else %}
<a class="link" href="#" style="color: white">退出</a>
{% endif %}
</li>
</ul>
</div>
</div>
<body>
<div id="body">
{% block content %}{% endblock %}
</div>
</body>
</html>
定义和基础模板了,那么在其他页面只要引用就好了,现在将基础模板引用到主页app/templates/index.html上
{% extends "base.html" %}
{% block content%}
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>
Hello,world
</h1>
</body>
</html>
{% endblock %}
以及app/templates/login.html上
{% extends "base.html" %}
{% block content%}
<head>
<style type="text/css">
.container{
width: 40%;
height: 50%;
font-size: 16px;
background: #F2F2F2;
border-radius: 7%;
}
#sub{font-size: 16px}
</style>
</head>
<div class="container">
<h2>登录</h2>
<form action="{{ url_for('login')}}" method="post" name="login" class="form-horizontal">
<div class="form-group">
<label class="col-sm-3 control-label">账号:</label>
<div class="col-sm-8">
<input class="form-control" type="text" name="username"><br><br>
</div>
<div class="col-sm-1"></div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">密码:</label>
<div class="col-sm-8">
<input class="form-control" type="text" name="password"><br><br>
</div>
<div class="col-sm-1"></div>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-8">
<input class="form-control btn btn-primary" type="submit" id="sub" value="提交">
</div>
<div class="col-sm-1"></div>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-9">
{% if error %}
<p class="error">
<strong>Error:</strong>{{ error }}
</p>
{% endif %}
</div>
</div>
</form>
</div>
{% endblock %}
然后刷新页面重新进入/login与/index查看
login页面
index页面
ok模板继承搞定了,给我省去了很多的麻烦