从这节开始到后面说的大概内容如下:

这里说的是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=)#图书名称
bpub_date = models.DateField()#发布日期
bread = models.IntegerField(default=)#阅读量
bcomment = models.IntegerField(default=)#评论量
isDelete = models.BooleanField(default=False)#逻辑删除 #定义英雄模型类HeroInfo
class HeroInfo(models.Model):
hname = models.CharField(max_length=)#英雄姓名
hgender = models.BooleanField(default=True)#英雄性别
isDelete = models.BooleanField(default=False)#逻辑删除
hcomment = models.CharField(max_length=)#英雄描述信息
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',,,),
('天龙八部','1986-7-24',,,),
('笑傲江湖','1995-12-24',,,),
('雪山飞狐','1987-11-11',,,);

      再复制如下语句执行,向booktest_heroinfo表中插入测试数据:

insert into booktest_heroinfo(hname,hgender,hbook_id,hcomment,isDelete) values
('郭靖',,,'降龙十八掌',),
('黄蓉',,,'打狗棍法',),
('黄药师',,,'弹指神通',),
('欧阳锋',,,'蛤蟆功',),
('梅超风',,,'九阴白骨爪',),
('乔峰',,,'降龙十八掌',),
('段誉',,,'六脉神剑',),
('虚竹',,,'天山六阳掌',),
('王语嫣',,,'神仙姐姐',),
('令狐冲',,,'独孤九剑',),
('任盈盈',,,'弹琴',),
('岳不群',,,'华山剑法',),
('东方不败',,,'葵花宝典',),
('胡斐',,,'胡家刀法',),
('苗若兰',,,'黄衣',),
('程灵素',,,'医术',),
('袁紫衣',,,'六合拳',);

 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(,,)
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项目的更多相关文章

  1. Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件mysql数据库,版本5.7 ...

  2. django 中连接mysql数据库的操作步骤

    django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mys ...

  3. Django中使用MySQL数据库的连接配置

    1. 安装pymysql pip install pymysql 2. 导入 # 在与 settings.py 同级目录下的 __init__.py 中引入模块和进行配置 import pymysql ...

  4. 使用TreeDMS进行MySQL数据库的Web页面远程管理

    在互联网应用蓬勃发展的时代背景下,各种各样的网络平台,网络应用,移动应用层出不穷,那么这些应用及平台都需要使用到数据库.如何高效的对数据进行日常维护.管理.监控成为迫切需要解决的问题. 基于web的方 ...

  5. selenium项目总结(UI自动化测试平台搭建、测试报告生成、邮件转发)

    最近博主完成了一个web端UI自动化平台测试环境搭建,包括常用的操作流程组合成方法,组织测试用例,利用框架及报告文件生成,最后通过邮件添加附件的格式发送. 首先UI自动化平台的核心是selenium+ ...

  6. Python之道1-环境搭建与pycharm的配置django安装及MySQL数据库配置

    近期做那个python的开发,今天就来简单的写一下开发路线的安装及配置, 开发路线 Python3.6.1+Pycharm5.0.6+Django1.11+MySQL5.7.18 1-安装Python ...

  7. (转载)Python之道1-环境搭建与pycharm的配置django安装及MySQL数据库配置

    近期做那个python的开发,今天就来简单的写一下开发路线的安装及配置, 开发路线 Python3.6.1+Pycharm5.0.6+Django1.11+MySQL5.7.18 1-安装Python ...

  8. HttpRunnerManager 接口自动化测试平台 搭建实践

    一.需要准备的知识点 1. linux: 安装 python3.nginx 安装和配置.mysql 安装和配置 2. python: django 配置.uwsgi 配置 二.我搭建的环境 1. Ce ...

  9. Jmeter+ant+jenkins接口自动化测试 平台搭建(一)

    平台简介 一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成.Jmeter 支持接口的测试,Ant 支持自动构建,而 Jenkins 支持持续集成,所以三者组合在一起可 ...

随机推荐

  1. NameNode和SecondaryNameNode工作原理剖析

    NameNode和SecondaryNameNode工作原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode中的元数据是存储在那里的? 1>.首先,我 ...

  2. EF的默认映射以及如何使用Data Annotations和Fluent API配置数据库的映射

    I.EF的默认映射 上节我们创建项目,通过定义实体类就可以自动生成数据库,并且EF帮我们自动设置了数据库的主键.外键以及表名和字段的类型等,这就是EF的默认映射.具体分为: 数据库映射:Code Fi ...

  3. <HTML> 模块

    一些元素 <q>元素 用于引用, quote 浏览器一般会负责加上双引号,但是不是所有的浏览器都会在<q>元素的内容两边加双引号. <blockquote>元素 用 ...

  4. [译]Ocelot - Service Discovery

    原文 你可以指定一个service discovery provider,ocelot将使用它来找下游的host和port. Consul 下面的配置要放在GlobalConfiguration中.如 ...

  5. java基础 关于final修饰符

    final作为一个修饰符,可以修饰类.变量.函数. 1.被final修饰的类不可以被继承(保护封装性),为了避免被继承,被子类复写: 2.被final修饰的函数不可以被复写 3.被final修饰的变量 ...

  6. 内网环境上部署k8s+docker集群:集群ftp的yum源配置

    接触docker已经有一年了,想把做的时候的一些知识分享给大家. 因为公司机房是内网环境无法连接外网,所以这里所有的部署都是基于内网环境进行的. 首先,需要通过ftp服务制作本地的yum源,可以从ht ...

  7. 【7】学习C++之类的构造函数

    (说实话,我一开始真没觉得构造函数这块有多重要,但是看的视频中老师却花了不少的时间去讲这块内容,本着整理了不亏的心态还是整理了一下) 1.常见的构造函数 C++的类在创建对象的时候,都会去调用构造函数 ...

  8. UOJ #450「集训队作业2018」复读机

    UOJ #450 题意 有$ k$台复读机,每时每刻有且只有一台复读机进行复读 求$ n$时刻后每台复读机的复读次数都是$ d$的倍数的方案数 $ 1\leq d \leq 3,k \leq 5·10 ...

  9. bootstrap时间格式化

    /** * 将"2018-05-19T08:04:52.000+0000"这种格式的时间转化为正常格式 * @param time */ function timeFormat(t ...

  10. 【easy】653. Two Sum IV - Input is a BST

    BST树求得两个节点的和是target //因为是BST所以中序遍历得到的是递增数组 //这个题的方法就是在一个递增数组中找到两个数的和相加是目标结果 /** * Definition for a b ...