以前写测试框架,要么是纯python代码驱动的,要么是WinForm界面的框架,多人操作并不适合。

就想用python写个Web版的,于是想到了Web快速开发的框架Flask和Django两个

个人觉得Django更快一些,后台管理,用户管理都不需要自己写了,虽然相较于Flask来说Django限制要多些,但是没关系

Django足够满足需求了。果断选Django

-------------------------------------------

环境:python2.7

安装:pip install Django

成功后在Pthon\Scripts下会有django-admin.py等

确认环境变量PATH可以执行django-admin(不设置那么,每次要进入所在路径执行)

-------------------------------------------

ok,准备功作完毕,开始创建第一个项目

1、创建项目
django-admin.exe startproject mysite

执行完成,命令行下,没有返回消息,可以到命令行所在目录看下项目创建成功没

startproject命令创建的项目下,包括了三个文件

manage.py文件是同django一起工作的工具。

settings.py文件包含项目位置,数据库信息,调试标志,和一些其它重要信息。

urls.py文件它是url映射到你应用程序里的配置文件。是django里非常强大的一个特性。

2、启动web服务
manage.py runserver

如果出现start develoment server at http://127.0.0.1:8000这说明启动成功了。

可以通过浏览器访问这个ip会看到'It worked'页面我们就可以进行下边开发了。

3、创建app应用

命令行到testProject目录下执行

manage.py startapp blog

blog是应用名字,自己决定

-------------到这里,项目创建完成,下面可以进行开发了-------------------

 这里使用的python开发环境pycharm

 1、将应用加到项目中来Settings.py

INSTALLED_APPS设置来告诉Django app也是项目的一部分。

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', #将应用加入
'bootstrap3', #这个是html样式pip可以安装
]

setting.py中配置数据库,sqlite3小型数据库,类似Access数据库
默认也是这个。如果使用sqlite3数据库不需要修改

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

2、设计Model

models.py这是定义数据结构的地方;是Django操作数据库的地方

# -*- coding: utf-8 -*-
from __future__ import unicode_literals from django.db import models
from django.contrib import admin
# Create your models here.
class blogPost(models.Model):
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DateTimeField() class blogPostAdmin(admin.ModelAdmin):
list_display = ('title','timestamp')
admin.site.register(blogPost,blogPostAdmin) #存储测试用例表
class caseInfo(models.Model):
step = models.AutoField #步骤序号
desc = models.CharField(max_length=150) #描述
url = models.URLField(max_length=200) #url
method = models.CharField(max_length=8) #方法 post or get
header = models.TextField() #头信息
data = models.TextField() #数据
date = models.DateTimeField() #日期时间
exetime = models.DateTimeField() #执行时间,执行时动态更新
exeresult = models.CharField(max_length=8) #执行结果
exeresponse = models.TextField() #影响信息

#后台,显示的字段,也就是/admin/登录的后台
class caseAdmin(admin.ModelAdmin):
list_display = ('desc','url','method','header','data','exetime','exeresult','exeresponse')
admin.site.register(caseInfo,caseAdmin) #将表信息注册到后台

在命令行执行,创建测试用例信息表

manage.py syncdb

如果你使用syncdb报错“未知命令”不要着急,这是由于Django 1.9版本以上命令换成了migrate

要先同步数据库:manage.py makemigrations 要不然数据库中不会有表

manage.py migrate
创建成功,会有很多的ok

可以下载工具查看数据库:SQLiteSpy.exe

----------------------------------------------------------

如果models.py中有更改,比如增加了新字段,都需要再次执行上边的两个命令makemigrations和migrate

------------------------------------------------------------------------

创建好model后,要登录后台去录入数据,那么我们需要创建个超级管理员帐户才行

创建超级用户:
manage.py createsuperuser

设置用户名,密码

然后登录:http://127.0.0.1:8000/admin/

Add增加信息

增加后,在数据库中可以查到增加信息。

-----------------------------------------------------------------------

要实现如下界面:

1、首先在app下建一个模版文件夹migrations  这个名子在Django是固定的不能改

     在这下边创建html页面

 

<html>

    <style type="text/css">
#box-table-a
{
font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
font-size: 12px;
margin: 45px;
width: 1240px;
text-align: left;
border-collapse: collapse;
}
#box-table-a th
{
font-size: 13px;
font-weight: normal;
padding: 8px;
background: #b9c9fe;
border-top: 4px solid #aabcfe;
border-bottom: 1px solid #fff;
color: #039;
}
#box-table-a td
{
padding: 8px;
background: #e8edff;
border-bottom: 1px solid #fff;
color: #669;
border-top: 1px solid transparent;
}
#box-table-a tr:hover td
{
background: #d0dafd;
color: #339;
}
</style> <head> {% load bootstrap3 %}
{% bootstrap_css %}
{% bootstrap_javascript %}
<title>IABS online</title>
</head>
<body>
<!-- 导航栏-->
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="/event_manage/">IATS接口自动化测试系统</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">用例管理</a></li>
<li><a href="/guest_manage/">测试报告</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">{{user}}</a></li>
<li><a href="/logout/">退出</a></li>
</ul>
</div>
</div>
</nav>
</br>
<!--table -->
<table id="box-table-a" summary="Test Case List">
<thead>
<tr>
<th scope="col">Step</th>
<th scope="col">Description</th>
<th scope="col">Url</th>
<th scope="col">Method</th>
<th scope="col">Headers</th>
<th scope="col">Data</th>
<!--
<th scope="col">Response</th>
-->
<th scope="col">Results</th>
<th scope="col">Execute Time</th>
<th scope="col">Execute</th>
</tr>
</thead>
<tbody>
{% for post in posts %}
<tr>
<td><p>{{post.id}}</p></td>
<td><p>{{post.desc}}</p></td>
<td><p>{{post.url}}</p></td>
<td><p>{{post.method}}</p></td>
<td><p>{{post.header}}</p></td>
<td><p>{{post.data}}</p></td>
<!--
<td><p>{{post.exeresponse}}</p></td>
-->
<td><p>{{post.exeresult}}</p></td>
<td><p>{{post.exetime}}</td>
<td>
<form method="post">
<input name="id" type="hidden" value="{{post.id}}" />
<input name="url" type="hidden" value="{{post.url}}" />
<input name="method" type="hidden" value="{{post.method}}" />
<input name="header" type="hidden" value="{{post.header}}" />
<input name="data" type="hidden" value="{{post.data}}" />
<input name='btn{{post.id}}' type="submit" value="执 行"/>
{% csrf_token %}
</form>
</td>
</tr>
{% endfor %}
</tbody>
</table> </body>
</html>

views.py

接收页面请求,验证响应信息code

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
from django.http import HttpResponse,request,HttpResponseRedirect
from models import blogPost
from models import caseInfo,statusInfo
from requests import Session
import json
# Create your views here.
def index(request):
#posts = blogPost.objects.all()
posts = caseInfo.objects.all()
status = statusInfo.objects.all()
if request.method=="POST": #执行代码
pid = request.POST.get('id')
url = request.POST.get('url')
method = request.POST.get('method')
header = request.POST.get('header')
postdata = request.POST.get('data') reStr = Session().post(url,data=eval(postdata))
if reStr.json()['code'] =='':
caseInfo.objects.filter(id=pid).update(exeresult='FAIL')
else:
caseInfo.objects.filter(id=pid).update(exeresult='PASS') return render(request,"index.html",{"posts":posts,}) elif request.method =="GET":
return render(request,"index.html",{"posts":posts,})

url.py

from django.conf.urls import url
from django.contrib import admin
from blog import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/$', views.index),
]

 代码到这基本完成了;当然还需完善;

点击,执行会将当前行的数据,传到后台,进行发送请求做处理…………

后续完善在更新…………

python快速开发Web之Django的更多相关文章

  1. 从零开始,使用python快速开发web站点(1)

    环境:ubuntu 12.04 python版本:  2.73 ok,首先,既然是从零开始,我们需要的是一台可以运行的python的计算机环境,并且假设你已经安装好了python, (ubuntu 或 ...

  2. 从零开始,使用python快速开发web站点(2)

    书接上文.http://blog.csdn.net/i7788/article/details/10306595 首先是数据库的搭建,这里的django的数据模型搭建十分easy. no sql.ju ...

  3. Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架

    Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的. 历史 Bootstrap 是由 Twitter 的 ...

  4. Python的第三方web开发框架Django

    1.Django Django是一个基于Python的第三方Web应用开发框架,可以简化Web开发. 官网:https://www.djangoproject.com/ 主要特点: ①采用MVC模型变 ...

  5. python open-falcon docker.WEB developers---flask,---django.

    http://www.verydemo.com/demo_c281_i2477.html (python Gevent – 高性能的Python并发框架) http://www.django-rest ...

  6. 实用 | 利用 aardio 配合 Python 快速开发桌面应用

    1. 前言 大家好,我是安果! 我们都知道 Python 可以用来开发桌面应用,一旦功能开发完成,最后打包的可执行文件体积大,并且使用 Python 开发桌面应用周期相对较长 假如想快速开发一款 PC ...

  7. python自动化开发-[第十八天]-django的ORM补充与ajax,分页器

    今日概要: 1.ORM一对多,多对多 2.正向查询,反向查询 3.聚合查询与分组查询 4.F查询和Q查询 5.ajax 6.分页器 一.ORM补充: django在终端打印sql语句设置: LOGGI ...

  8. bottle+cherrypy快速开发web服务

    我目前用得最顺手的python web框架是bottle,简单方便. bottle有一个开发用的http服务器,效率不高,单线程,阻塞. 所以,得找个别的服务器来部署. 根据bottle官方的文档,发 ...

  9. Spring Boot快速开发Web项目

    我们以前使用Spring框架的时候,需要首先在pom文件中增加对相关的的依赖,然后新建Spring相关的xml文件,而且往往那些xml文件还不会少.然后继续使用tomcat或者jetty作为容器来运行 ...

随机推荐

  1. 省一行是一行:在if语句中使用C# 7.0的模式匹配

    C# 7.0的模式匹配(Pattern Mathing)不仅可以节省代码,而且可以让代码更流畅(Fluent),今天又在实际开发中体会了一下. 不用模式匹配的代码,需要先获取返回值,然后用if进行判断 ...

  2. 洛谷试炼场-简单数学问题-P1403 [AHOI2005]-因数

    洛谷试炼场-简单数学问题 P1403 [AHOI2005]约数研究 Description 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机"Samuel I ...

  3. [development][libhtp] libhtp 启用debug模式

    可以使用 ./configure --help 查看帮助. 可以通过参数, 修改配置. 即对应的Makefile内容. 也可以修改 configure.ac 里的内容, help中的部分内容, 也依赖 ...

  4. LeetCode 806 Number of Lines To Write String 解题报告

    题目要求 We are to write the letters of a given string S, from left to right into lines. Each line has m ...

  5. 实验四 Android程序设计

    20155224 实验四 Android程序设计 实验报告 实验报告封面: 课程:Java程序设计 班级:1652班 姓名:王高源 学号:20165225 指导教师:娄嘉鹏 实验日期:2018年5月1 ...

  6. html5页面与android页面之间通过url传递参数

    html5页面与android页面之间可以通过url传递参数,android将参数放在htm5的url  ?后面,js获取url  ?号后面的参数. 方法一: <scrīpt> /* 用途 ...

  7. es的timeout机制

    GET /_search?timeout=10ms默认情况下,es的timeout机制是关闭的.比如,如果你的搜索特别慢,每个shard都要花好几分钟才能查询出来所有的数据,那么你的搜索请求也会等待好 ...

  8. 【F12】谷歌浏览器--前台效果可以在不访问服务器的前提下直接改样式看效果是否是预期值。

    F12-前台效果可以在不访问服务器的前提下直接改样式看效果是否是预期值. 1.Element---页面所有元素,通过它可以做selenium的元素定位,删除页面元素,增加页面属性(通过增加页面属性便于 ...

  9. Ajax请求 一般处理程序参数传递的几种方式

    //第一种Ajax请求 $.ajax({ type:"GET", //请求类型,有get,post等类型,和表单提交是一样的 url:"Result.aspx" ...

  10. dedecms如何去除后台登陆验证码

    用dedecms批量建站一般直接把文件打包复制,然后导入数据库,一个新网站就好了,但有时后台一直无法登录,提示验证码错误.那我们就想怎么把验证码关闭,现在就给大家解决织梦去掉后台登陆验证码.我们知道d ...