文章目录
文章目录
前言
一、什么是MVC
二、创建一个Tornado工程
2.1工程目录结构
2.2操作数据库
2.2.1数据库的配置
2.2.2数据库环境操作
总结
前言
之前的文章中已经总结了一点Tornado框架的基础知识,但是对于如何搭建一个真正的Tornado后端服务还远远不够。搭建一个后端服务不仅仅需要学会基础的框架模块知识,还需要学会设计整个项目的代码结构和运行机制。那么如何去设计整个项目的代码结构呢,其实在上手开发中我们一般采用的是MVC软件架构模式进行开发的。
一、什么是MVC
MVC(Model View Controller),即模型——视图——控制器,整个MVC对应的就是展现层部分。Model的作用就是实现业务逻辑;View是视图,它的作用就是将数据以页面的形式展示出来;Controller实现了页面与业务逻辑之间的交互,通过调用Model中的类方法来实现项目的业务功能。通俗一点来讲,整个项目的外壳就是View来实现,那么如何让躯体动起来呢,这就得靠Model和Controller实现这部分的功能。
打个比方:假设Model就是你的肌肉记忆,Controller就是神经冲动,当你要想做一个动作时,是不是需要由中枢神经发出一个冲动来调用你的肌肉记忆(或者说是效应器)来完成。那么这时Controller就相当于神经中枢,Model就是效应器哈哈哈。
需要注意的是,当提交数据传到Model时,Model不会直接将数据给View,而是通过Controller来实现。
二、创建一个Tornado工程
前面已经说了,搭建一个工程比较常规的做法是为项目搭建起MVC软件架构,至于为什么搭建这么一个架构呢,还是得自己手敲一边体会更深吧。其实我个人感觉最不可忽视的作用就是让你的工程可维护性更好,降低开发难度。那么如何开启这么一个项目?接下来我就简要的说一说。
2.1工程目录结构
这里我贴一下我的本地项目的目录
看上去一个工程目录其实主要有这么几部分组成:views、templates、static、application.py、config.py、server.py、usrSQL.py。下图介绍一下他们各自是什么:
其实上面的思维导图写的已经很清楚了,这里解释一下我的项目目录下的其它文件,由于Tornado自身不像Django那样带有数据库的操作,所以我自己把有关数据库的操作简单的封装在usrSQL.py文件里,intercepter.py里面是我针对后台登录入口做的拦截校验规则,Helper.py和UserService.py是一些工具类函数,比如登录密码加密,分页操作等等。
开发一个项目是需要一个比较好的工程目录布局,我的布局也不是很完美,上图目录中我也没有将所有的工具类文件放在一个目录下,但基础的想法还是一个MVC的架构的,所以就贴出来大致讲一下咯。
2.2操作数据库
写了一下项目的目录设计,还是再介绍一下数据库怎么用吧。我个人用的是python的一个实现数据库操作的库pymysql,当然了,你也可以直接使用mySQLdb哈哈哈。
2.2.1数据库的配置
首先,还是在全局配置的文件下写好有关数据库的配置,再config.py文件中配置好数据库的有关配置参数
mysql = {
"host":"你的数据库ip地址",
"user":"用户名",
"password":"***",
"database":"数据库名称"
}
2.2.2数据库环境操作
在application.py中首先要实现数据库的环境操作。
# 路由映射子表
import tornado.web
import config
# 引入数据库文件
from usrSQL import usrSQL
#拦截器
from interceptor import Interceptor
class Application(tornado.web.Application):
def __init__(self):
# 映射路由表
handlers = [
...
]
super(Application, self).__init__(handlers, **config.settings)
self.db = usrSQL(config.mysql["host"], config.mysql["user"], config.mysql["password"], config.mysql["database"])
self.inter = Interceptor(config.options['url'])
然后就把有关数据库操作的方法封装在usrSQL中即可,当然了,也可以直接写,只不过可能会比较乱一点。