身为中台测试,很多功能需要依赖前端数据支撑,可以说是“测试5分钟,造数半小时”,实在无法忍受,于是学习了python Django框架,想做一个页面化的工具一键生成想要的数据,于是结合自身技能get情况、寻找最快实现方案,列了个list:
1.python Django框架,网上找一些视频教程,参考书推荐虫师的《python web接口开发与测试》
2.实现前端页面,想要做一个左边菜单右边页面的布局,回顾html、css实现左右布局页面,bootstrap实现一些如菜单展示收起效果、下拉列表等类型通用控件功能
然后就开始行动,遇到问题千万不要退缩,网上有很多解决攻略的哦。
------第一阶段:实现简单功能-以页面创建用户为例展开分享------
一、Django环境搭建:
完成python、django、pycharm工具安装
请自行百度,攻略很多
二、Django基础
2.1 Django工程目录
(1)创建工程:django-admin.py startproject testtools
(2)工程目录:
init.py: 初始化文件 同样也标志我们的app可以被引用
django默认使用SQLite,连接我们mysql数据库在此文件添加如下代码:
import pymysql
pymysql.install_as_MySQLdb()
setting.py:Django配置文件,配置app、数据库等, django默认使用SQLite,连接我们mysql数据库-db_Hdf库需要修改DATABASES为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname',
'USER': 'username',
'PASSWORD': 'pwd',
'HOST': 'ip地址',
'PORT': '3306',
}
}
urls.py:Django项目的url声明
manage.py:命令行工具,如可以使用python manage.py startapp user创建user应用
2.2 Django应用目录
(1)创建应用:python manage.py startapp user
(2)应用目录:
migrations.py:用于记录models中数据的变更,如创建模型:
admin.py:映射models中的数据到Django自带的admin后台
http://127.0.0.1:8000/admin/ 我们用不到,有兴趣的请自行研究
# Generated by Django 2.2.2 on 2019-06-09 02:48
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='User',
fields=[
('userId', models.AutoField(primary_key=True, serialize=False)),
('userName', models.TextField()),
('createTime', models.DateTimeField()),
],
),
]
apps.py:用于应用程序配置,我们不需要操作此文件
models.py:模型文件–模型文件中的类对应数据库中的表,如
from django.db import models
# Create your models here.
#创建User类
# class User(models.Model):
# #userId --数字类型,自增,主键
# userId = models.AutoField(primary_key=True)
# #userName--字符串类型
# userName = models.TextField()
# #userMobile--字符串类型
# userMobile = models.TextField
# #createTime--日期类型
# createTime = models.DateTimeField(auto_now=True)
# 其他字段......
class User(models.Model):
get_latest_by = '字段名'
变量userid = models.AutoField(db_column='userId数据库字段名', primary_key=True) # Field name made lowercase.
变量username = models.CharField(db_column='userName数据库字段', unique=True, max_length=50) # Field name made lowercase.
。。。其他字段
class Meta:
managed = False
db_table = 'tab_User'
views.py:Django的视图文件,控制前端页面响应交互
另外,除以上自带目录外,我们需要创建tempaltes目录,需在此目录下Django模板
(3)在Django工程setting.py中添加应用user:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'user',
]
三、Django的MTV模式:
M(Modle):模型类-对应数据库表,类属性–表字段,
T(Tempalte):Django模版–html页面
V(View):视图函数,控制前端页面的展示
说明:Django的Controller通过urls.py直接进行配置
四、已有数据库如何自动生成模型:
使用命令:python manage.py inspectdb > user/models.py
执行后查看models.py文件,已有用户表所在库所有表对应的模型
----模型数据就绪
五、Django模板编写
布局:实现点击左侧导航“创建用户”-右侧显示创建用户页面:
在tempaltes目录下创建main.html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>主页面</title>
<style>
div{
margin: 0px;
}
#top{
width: 100%;
height: 50px;
background-color: azure;
}
#center{
width: 100%;
height: 500px;
background-color: azure;
}
#left{
width: 20%;
background-color: cadetblue;
height: 500px;
float: left;
}
#right {
width: 80%;
background-color: azure;
height: 500px;
float: left;
}
iframe {
background-color: cornsilk;
height: 500px;
width:100%;
float: left;
}
</style>
</head>
<body>
<!-- 2-2布局 -->
<div id="top">
<header>
<h1 align="center">中台造数工具</h1>
</header>
</div>
<div id="center">
<div id="left">
<ul>用户管理模块
<!-- href属性设置跳转页面链接,target属性设置显示位置-->
<li><a href="/user/createuser/" target="iframe_right">创建用户</a></li>
</ul>
</div>
<div id="right">
<!-- iframe设置name属性,其他元素将target属性设置为iframe元素的name值来显示在iframe中-->
<iframe name="iframe_right"></iframe>
</div>
</div>
</body>
</html>
2.创建createuser.html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>创建用户</title>
</head>
<body>
<h2>创建用户</h2>
<form method="POST" action="/user/createuser_action/">
<input type="text" name="userName" placeholder="请输入用户名" />
<button type="submit">添加</button>
<div> <h1>{{ message }}</h1></div>
</form>
</body>
</html>
六、编写试图函数控制页面展示及用户输入后处理函数
views.py中添加
createuser()和createuser_action()函数
显示页面、处理表单提交请求添加用户
from django.shortcuts import render
from .models import TabUser
'''
author:xxx
功能:
1.创建新用户
创建日期:xxxx-xx-xx
最新修改:xxxx-xx-xx by xxx
'''
# Create your views here.
def index(request):
response = render(request,"main.html")
return response
#显示添加用户页面
def createuser(req):
return render(req, "createuser.html")
#创建新用户
def createuser_action(request):
#接收用户输入值
userName = request.POST.get("userName","")
try:
#取最大userid+1作为新用户的userid
userId = TabUser.objects.order_by('-userid')[0].fld_userid + 1
# 增加数据并保存
TabUser.objects.create(userid=userId, username=userName)
message = "添加成功,userName:" + str(userName) + ",userId:" + str(userId)
except Exception:
message = "添加失败,请检查填写信息,或该用户名已存在!"
return render(request, "createuser.html", {"message": message})
七、配置路由
Django项目setting.py中按照如下进行路由配置:
from django.contrib import admin
from django.urls import path
from user import views
urlpatterns = [
path(r"index/",views.index),
path(r"user/createuser/",views.createuser),
path(r"user/createuser_action/", views.createuser_action),
]
八、运行项目:
python manage.py runserver
浏览器访问:http://127.0.0.1:8000/index/
添加用户你就可以使用啦
(PS:使其他人使用只需要在setting.py中添加如下代码,
启动命令 python manage.py runserver 0.0.0.0:8000即可)
ALLOWED_HOSTS = ["*", ]
九、拓展:平台还以做什么:
1.完成数据构造
类型1:数据处理单一
--如单纯的像数据库中插入数据,按照如上流程开发即可
类型2:数据处理复杂
如创建xx类型xx交流中的一个功能,要提交订单、支付、后台审核、接单才能得到我们想要的数据,真实场景会向多个数据库插入数据,此类数据构造,需要使用python模拟客户端请求,下次再做改分享
2.远程执行脚本等
比如输入云主机地址,选择要执行的脚本(可以做成下拉列表),输入脚本参数等,一键执行脚本