Tornado, Flask, Django是否可以代表Python世界中的3类典型Web框架?

2013-09-27 20:35:05 +08:00
 hustlzp
RT.

Flask代表micro(此类还有bottle和web.py)。

Django代表full-stack。

Tornado代表asynchronous 。

可以这样认为吗?

是否可以这样说:这3个框架基本可以代表Python Web开发的主要模式?
19830 次点击
所在节点    Python
13 条回复
binux
2013-09-27 20:48:41 +08:00
我觉得这些框架只有功能多寡的不同,没有模式的不同

从0考虑一个web框架可能有什么:
* TCPServer
* request,response封装
-- 路由
-- 接口转换
* 模板
* 工具集
-- 数据库接口
-- 各种转换
-- 各种生成器

回头看上面的几个框架,除了tornado自带了一个与众不同的TCPServer之外,三者没有任何不同
只不过是API以及utils功能强弱的不同而已
hustlzp
2013-09-27 20:58:29 +08:00
@binux 个人感觉flask可以通过强大的扩展能力武装成Django一样强大。

不过tornado的异步应该就和上面2者不太一样了。
hustlzp
2013-09-27 20:59:08 +08:00
恩,现在的框架的基本组成部分都是差不多的了,RoR带起来的MVC风。
binux
2013-09-27 21:00:10 +08:00
@hustlzp 但是对于一般web应用来说,这样的差别对其不可见
hustlzp
2013-09-27 21:25:34 +08:00
@binux 是的。
no13bus
2013-09-27 21:55:23 +08:00
web2py算啥
fanzeyi
2013-09-27 22:11:58 +08:00
quixote ...
humiaozuzu
2013-09-28 00:07:54 +08:00
可以,他们的适用场景不同,以及灵活性(于是这个不同口味的人选择就不同了)

Django 就像 IDE 给你的插件(admin,orm,route 等)没法换,但是 Flask 像 Editor 有很多供选择的 batteries。

以及,Flask 这货在 app 大之后,需要开发者自己有一定的经验和构架的能力才可以很好的控制各种模式:

### app framework

- app factory
- blueprint
- api/template error handling
- development/testing/staging/production server configurations
- db logic
- db logic error handing
- controller
- delayed jobs
- json serialization/template rendering

### management

- database miggration
- app manage commands

### testing

- moking/testing
- profiling(performance testing)
- security testing

### deployment/operation/monitor

- deployment automation
- manage automation
- app exception monitor
- app/db performance monitor
hustlzp
2013-09-28 07:09:29 +08:00
@humiaozuzu 感谢分享!
julyclyde
2013-09-28 15:58:04 +08:00
@binux 对。读过框架初始化那一段儿代码之后觉得其实也没多难。难的是细节的处理而不是框架的构建本身
ryangao
2013-09-30 22:11:46 +08:00
Tornado 和其他框架重要的区别其实在完全不同的层次。它是应该和 Gevent / flup 去比,分别代表了处理并发请求的三种不同模型:基于事件的 CSP、基于 greenlet 的 reactor 模型和最常见的多线程模型。这里带来的才是根本的差异。
至于 Flask vs Django vs Web.py,只不过是代码组织的一点不同而已。
hustlzp
2013-09-30 22:13:10 +08:00
@ryangao 原来如此,看来学习一下Tornado拓展视野是有必要的。
julyclyde
2013-10-06 14:46:47 +08:00
@ryangao 你说的这几种模型是在什么方面的划分?reactor这个词好像在很“科学”的一些资料上见过。不过平时看的都是工程技术类的资料啊。求扫盲

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/83956

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX