Python 的 web 框架哪个好呢

2016-12-05 16:08:55 +08:00
 xz
web.py flask tornado Django 自己玩的小项目选哪个呢
6194 次点击
所在节点    Python
83 条回复
misaka19000
2016-12-05 18:44:25 +08:00
PHP +1
yjmade
2016-12-05 18:52:52 +08:00
odoo
28ms
2016-12-05 18:56:33 +08:00
django 套路熟悉了之后非常方便, admin 模块不容小视。
anjunecha
2016-12-05 19:05:11 +08:00
严肃点做就 tornado
ke1e
2016-12-05 19:21:19 +08:00
Flask 爱咋咋地
tumbzzc
2016-12-05 19:22:26 +08:00
@misaka19000 R U Serious ? PHP ?
chaichaichai
2016-12-05 19:52:42 +08:00
tornado
NaVient
2016-12-05 19:53:12 +08:00
我用 flask 加扩展到最后都怀疑自己用的是 django 手动滑稽
keysona
2016-12-05 20:04:48 +08:00
django 大而全。

flask 小而精。

说真的, flask 可以学到很多东西。
之后,用 django 可以节省很多时间。

所以,学习的话 flask 入手。

反正前三楼说的都要学。
FindHao
2016-12-05 20:05:37 +08:00
习惯了 tornado
windfarer
2016-12-05 20:07:17 +08:00
aiohttp.web
jimzhong
2016-12-05 20:23:14 +08:00
看你的需求,小项目有多小?
Django 五脏俱全, Flask 需要很多第三方扩展。
zhuangzhuang1988
2016-12-05 20:33:32 +08:00
django .. 别作死用别的。。
tonghuashuai
2016-12-05 20:38:01 +08:00
我还是推荐 Tornado

Flask 一直说自己很优雅,但是我觉得很多地方用起来并不优雅,举几个例子:
主要觉得不好的地方在于 view 是使用函数实现而不是类
1. 在一个函数里面如果要同事处理 get 和 post 请求,就要使用 if 判断,
if request.method == 'POST':
pass
elif request.method == 'GET':
pass

这很明显不够优雅啊,应该分开处理啊, Tornado 用类来实现 view GET 和 POST 分别用不同的函数处理,多么好啊。

2. 就是 before_request 的方式
如果想实现访问鉴权的话,写到 app.before_request 装饰的函数里,但是他是全局的,如果一些 view 不需要鉴权,那又得 if 判断了, blueprint 也有 before_request ,但是写起来总是不够方便,而 Tornado 就可以用多重继承, Mixin 等方式,很方便啊

3. 就是在 view 嵌套函数
嵌套函数倒没什么问题,但是大量使用的话总觉得不够优雅吧,类方法才够优雅啊

当然,上面的疑问也可能是我对 flask 不够了解导致,如果又更好的实现,欢迎大家讨论。
xrlin
2016-12-05 20:46:33 +08:00
@NaVient 手动滑稽,我当初用 flask 的时候也有同感
dtfm
2016-12-05 20:46:46 +08:00
@tonghuashuai before_request 这种钩子不方便么?能举个小例子说明一下 Tornado 怎么处理的么,我也一直觉得 Flask 有的地方处理蛮繁琐的,但又没有接触过其他框架,所以无从比较。
leyle
2016-12-05 20:53:14 +08:00
@dtfm 我鉴权写个装饰器挂在 get post put 之类的方法上上面即可。
northisland
2016-12-05 20:53:25 +08:00
tornado 有出版的教程,纯新手适合
loryyang
2016-12-05 20:57:21 +08:00
新手 flask ,上手很快,到后面了, django 其实也挺好的
tonghuashuai
2016-12-05 21:02:15 +08:00
@dtfm
Tornado 就可以用多重继承, Mixin 等方式
@leyle
装饰器方式鉴权确实是一种方式,但是我考虑倒一种场景:
如果绝大多数 view 都需要鉴权,而不需要鉴权的就几个(比如后台系统,一般只有注册和登录不需要鉴权),那这个装饰器是不是就不太好了,而 Tornado 只需要为少数不需要鉴权的 view 实现个基类就好了,而不需要去处理大多数

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

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

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

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

© 2021 V2EX