Tornado x MVC
Posted PyHub
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tornado x MVC相关的知识,希望对你有一定的参考价值。
Tornado 是一款基于 Python 的非阻塞式 Web 服务器框架,从小巧、灵活性的角度来看介于 Flask 和 Django 之间,但在高并发性能上却显著优于前两者,这也是 采用 Tornado 框架的原因之一。和 Flask 类似,不需要进行复杂的配置和设定,只需简单几行就可以完成一个可运行的 Tornado 服务程序:
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
运行之后就可以在 http://localhost:8888
访问网页。
然而灵活性的缺点在于缺乏良好的组织结构,往往是在开发过程中随着需求的增加而逐渐增加 router => Handler
,导致项目结构混乱,非常不利于维护。为了解决这一问题,今天我将 PyHub 的代码进行简单的分离、重构,区分出 Model
和 Controller
,加上原有的 Template(View)
,形成 MVC 结构。
项目的目录结构如下:
.
├── LICENSE
├── README.md
├── app.py
├── config
│ └── __init__.py
├── controller
│ ├── HomeHandler.py
│ └── __init__.py
├── model
│ └── __init__.py
├── requirements.txt
├── static
│ ├── css
│ ├── images
│ └── js
└── view
└── 404.html
安装、使用步骤:
git clone https://github.com/rainyear/tornado-mvc.git
cd tornado-mvc/
python3 -m venv venv3
source venv3/bin/activate
pip install -r requirements.txt
python app.py --env=dev
扩展:
框架基于 Python 3
和 tornado 4.3
;
数据库可以通过修改 model/__init__.py
切换到非 MongoDB 环境;
可以通过 config/__init__.py
修改一些配置信息,若是敏感性的配置信息(如 Cookie 秘钥)可加入到 .gitignore
防止上传到公开仓库;
增加新的路由和 Handler
分别修改 app.py
中的 router
以及向 controller/
中添加新的处理方法类,注意应继承 BaseController
并将公有方法放在 BaseController
中,并通过 controller/__init__.py
中的 __all__
变量设定 from controller import *
导入的方法。
Tornado 教程
了解更多 Tornado 相关的信息和教程,可以参考:
官方文档[英文]:
中文翻译[基于 tornado-1.2.1]:
官方 Demo:
PyHub 项目源码:
以上是关于Tornado x MVC的主要内容,如果未能解决你的问题,请参考以下文章
ASP.net MVC 代码片段问题中的 Jqgrid 实现