自动化测试平台搭建-django-如何用mysql数据库做web项目
Posted 上海小盖伦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化测试平台搭建-django-如何用mysql数据库做web项目相关的知识,希望对你有一定的参考价值。
从这节开始到后面说的大概内容如下:
这里说的是Django做一个web项目的大概框架,从下篇具体说Django中的模型(查询。。),视图(请求,响应,cookie,session。。),模板(验证码,反向解析。。。),还有一些常用的,静态文件处理,中间件,上传图片,全文检索等等,最后是部署环境(wsgi,nginx)
前景:django自带的数据库是sqlite3,这是一种轻量级数据库,一般用于手机中,web项目用的大多数还是mysql,这次做一个项目‘图书-英雄’信息管理
1、在家目录下的Desktop创建一个文件夹,在这个文件夹下创建一个名为pytest1虚拟环境(第一篇已经说过怎么安装虚拟环境)
(1)cd ~/Desktop
(2)mkdir project_1
(3)mkvietualenv -p python3.5 pytest1 #创建虚拟环境
(4)workon pytest1 #进入虚拟环境
(5)pip install django=1.8.2 #在虚拟环境中安装需要的包
(6)django-admin startproject test2 #创建项目test2
(7)cd test2
(8)python manage.py startapp booktest #创建应用booktest,图书信息
(9)将应用与项目关联,修改如下图
2、django框架默认使用sqlite3数据库,如何让他使用MySQL数据库呢?看下图
配置代码:
DATABASES = {
\'default\': {
\'ENGINE\': \'django.db.backends.mysql\',
\'NAME\': \'test2\', #数据库名字,
\'USER\': \'root\', #数据库登录用户名
\'PASSWORD\': \'mysql\', #数据库登录密码
\'HOST\': \'localhost\', #数据库所在主机
\'PORT\': \'3306\', #数据库端口
}
}
3、上面的配置中,数据库test2在django框架下不会自动创建,所以我们要手动进入MySQL数据库去创建
进入终端 (1)sudo mysql service start #启动mysql
(2)mysql -uroot -p密码 #连接mysql
(3)create database test2 charset=utf8;#创建test2数据库
4、定义模型类(上一篇讲过)
- 模型类被定义在"应用/models.py"文件中,此例中为"booktest/models.py"文件。
- 模型类必须继承自Model类,位于包django.db.models中。
- 提示:对于重要数据使用逻辑删除。
实例演示:
(1)打开booktest/models.py,定义模型类如下:
from django.db import models #定义图书模型类BookInfo class BookInfo(models.Model): btitle = models.CharField(max_length=20)#图书名称 bpub_date = models.DateField()#发布日期 bread = models.IntegerField(default=0)#阅读量 bcomment = models.IntegerField(default=0)#评论量 isDelete = models.BooleanField(default=False)#逻辑删除 #定义英雄模型类HeroInfo class HeroInfo(models.Model): hname = models.CharField(max_length=20)#英雄姓名 hgender = models.BooleanField(default=True)#英雄性别 isDelete = models.BooleanField(default=False)#逻辑删除 hcomment = models.CharField(max_length=200)#英雄描述信息 hbook = models.ForeignKey(\'BookInfo\')#英雄与图书表的关系为一对多,所以属性定义在英雄模型类中
(2)生成迁移文件
终端执行命令:python manage,py makemigrations
生成迁移文件的时候出现错误,把数据库切换成了mysql,需要安装pymysql模块之后,Django框架才可以操作mysql数据库。安装命令:pip install pymysql -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
安装成功之后,在test2/_init_.py文件中加上如下代码:
import pymysql
pymysql.install_as_MySQLdb()
然后执行如下命令:
python manage.py makemigrations #生成迁移文件:根据模型类生成创建表的迁移文件
python manage.py migrate #.执行迁移:根据第一步生成的迁移文件在数据库中创建表
(3)进入数据库查看有没有生成表
(4)在数据库命令行中,复制如下语句执行,向booktest_bookinfo表中插入测试数据:
insert into booktest_bookinfo(btitle,bpub_date,bread,bcomment,isDelete) values (\'射雕英雄传\',\'1980-5-1\',12,34,0), (\'天龙八部\',\'1986-7-24\',36,40,0), (\'笑傲江湖\',\'1995-12-24\',20,80,0), (\'雪山飞狐\',\'1987-11-11\',58,24,0);
再复制如下语句执行,向booktest_heroinfo表中插入测试数据:
insert into booktest_heroinfo(hname,hgender,hbook_id,hcomment,isDelete) values (\'郭靖\',1,1,\'降龙十八掌\',0), (\'黄蓉\',0,1,\'打狗棍法\',0), (\'黄药师\',1,1,\'弹指神通\',0), (\'欧阳锋\',1,1,\'蛤蟆功\',0), (\'梅超风\',0,1,\'九阴白骨爪\',0), (\'乔峰\',1,2,\'降龙十八掌\',0), (\'段誉\',1,2,\'六脉神剑\',0), (\'虚竹\',1,2,\'天山六阳掌\',0), (\'王语嫣\',0,2,\'神仙姐姐\',0), (\'令狐冲\',1,3,\'独孤九剑\',0), (\'任盈盈\',0,3,\'弹琴\',0), (\'岳不群\',1,3,\'华山剑法\',0), (\'东方不败\',0,3,\'葵花宝典\',0), (\'胡斐\',1,4,\'胡家刀法\',0), (\'苗若兰\',0,4,\'黄衣\',0), (\'程灵素\',0,4,\'医术\',0), (\'袁紫衣\',0,4,\'六合拳\',0);
5、定义视图
(1)打开booktest/views.py文件,代码如下:
from django.shortcuts import render,redirect from booktest.models import * from datetime import date #查询所有图书并显示 def index(request): list=BookInfo.objects.all() return render(request,\'booktest/index.html\',{\'list\':list}) #创建新图书 def create(request): book=BookInfo() book.btitle = \'流星蝴蝶剑\' book.bpub_date = date(1995,12,30) book.save() #转向到首页 return redirect(\'/\') #逻辑删除指定编号的图书 def delete(request,id): book=BookInfo.objects.get(id=int(id)) book.delete() #转向到首页 return redirect(\'/\')
6、配置url
(1)打开test2/urls.py文件,配置代码如下:
from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ url(r\'^admin/\', include(admin.site.urls)), #引入booktest的url配置 url(r\'^\',include(\'booktest.urls\')), ]
(2)在booktest应用下创建urls.py文件,代码如下:
from django.conf.urls import url from booktest import views urlpatterns=[ url(r\'^$\',views.index), url(r\'^delete(\\d+)/$\',views.delete), url(r\'^create/$\',views.create), ]
7、创建模板
(1) 打开test2/settings.py文件,配置模板查找目录TEMPLATES的DIRS
(2)在booktest应用下创建temlates/booktest/index.html,如下图
index.html模板代码如下:
<html> <head> <title>复习案例</title> </head> <body> <a href="/create/">创建</a> <ul> {%for book in list%} <li>{{book.btitle}}--<a href="/delete{{book.id}}/">删除</a></li> {%endfor%} </ul> </body> </html>
8、运行服务
pythonmanage.py runserver 127.0.0.1:7798
9、在界面做创建或删除,看数据库效果,你会发现数据库会随着界面的创建和删除的改变而改变,这就是我们要达到的效果
以上是关于自动化测试平台搭建-django-如何用mysql数据库做web项目的主要内容,如果未能解决你的问题,请参考以下文章
平台化测试难度大?京东教你如何用无人测试实现产品质量效率双提升
平台化测试难度大?京东教你如何用无人测试实现产品质量效率双提升