之前有 Django 的经验,最近看了看 Flask 。
还是觉得初学者先用 Django 比较好。
Flask VS Django 有点像 ubuntu VS macOS
Django 有清晰的文档和简单地设计,自成一派。通过 Django 的学习,你大概知道现代 web 框架的开发流程。 Flask 做的事情,都是经过拓展。学习的过程中会迷失在寻找插件中。学习使用的过程中,会迷失在插件的文档中。
Django 的特点,就是都帮你设计好了。 Flask 就是需要你自己来。但是换个角度,针对某些广泛的业务,无非就是, MVC 那一套, Model 层的 ORM , View 后台渲染模板, C 的控制逻辑。 Django 全都给你,还给你清晰的文档。而 Flask 就要你自己来凑,凑成 Django 的模样。
Django 有大而全的文档,其实学习只要前面的初级教程罢了,用到再查。并不需要看多少。 Flask 的文档,却被分散到每个拓展模块,模块的开发,设计,文档参差不齐,选用插件,很考验眼力和经验。我想这并不适合初学者。
Flask 可以把一个网站写在一个文件里,但是这种灵活性往往是,没啥意义。我们期望于清晰可拓展的文件结构。同样,这个工作还要用户自己来做。
总之, Flask 做着做着,就变成了 Flask 实现的 Django 。
就像 Ubuntu ,很多极客配置来配置去,你无非想配置成 macOS ,何不直接用 macOS 。
我现在觉得 Flask 的适合那种,研究比较深入,业务比较独特的。或者就想从头到尾自己架构的。对 Flask 本身以及组件开发具有深入了解的人。
但是如果你只是想快速搭建 web 。而不是纠结框架和技术本身。我觉得应该从 Django 开始。
1
ruanimal 2017-01-03 13:42:35 +08:00
是的,和我看法差不多
|
2
Mark24 OP 我在想,指定特定的功能,逻辑是守恒的,当你去实现的和拆分一定是>= 纯实现逻辑。
ORM ,路由,模板渲染,用户认证,这些基本上本来就需要。交给不同人,就会产生很多冗余。 我想如果 Flask 同等条件下把功能 拼凑成 Django ,应该比 Django 本身还大,速度还慢才对。 Django 内部的系统,沟通起来应该更顺畅一些。 还是就是 Django 的写法比较一致。 Flask 的会被插件,组件所左右和捆绑。 我们常听到, Django 会捆绑用户,但是 Flask 只是换了个方式捆绑用户罢了,用插件捆绑用户。而这种捆绑有着更大的不确定性,因为依赖了插件作者——如果全部重头自己来——别忘了,我们的目的,只是想又快又好的构建 web 而已。而不像陷入造轮子的汪洋大海里。 这是我的个人理解。 我倾向于推荐整体方案。 Django 的那套学会,完全可以参考 Django ,使用 Flask 的灵活性,去按照设计思想构建自己的框架。 但是刚开始,对于新人,清晰度,完整性,更重要。灵活性对新人反而有害,不利于交流(如果大家用的组件都不一样,就完了。这是我看书的经验。每本 Flask 的作者都倾向于用自己挑选的一套组件解决问题。很难交流。书具有时间的滞后性。) |
3
ty89 2017-01-03 13:53:06 +08:00
个人开发者:建议用 django
团队开发:建议用 flask |
4
AlexaZhou 2017-01-03 13:55:23 +08:00
这两个都太复杂了,相比起来我更推荐 Tornado
|
5
clino 2017-01-03 13:59:08 +08:00
|
6
sudoz 2017-01-03 14:00:07 +08:00
认同, Python Web 最开始我是从 Django 入手,后来用 Flask ,前后比较基本上如楼主所言
|
7
qq7171891 2017-01-03 14:07:20 +08:00 3
如果 LZ 是想讨论的话,那我的观点和您的完全相反:新手适合从 flask 开始。
我是一名产品设计师,行业 4 年左右开始学习编程的(之前完全没经验),选择 python 后面临学什么框架的问题,也是最后面临这两个选择,最终选了 flask : 1 、 flask 是微型框架,基于 python 这样语法简介的语言之上,因此很容易写出 hello word ,然后再深入; Diango 则相反,因为定位本来就是生产。新手需要渐进学习和理解,这样 flask 更适合。当初也是听说学 Django 不要学 flask 这样的玩具浪费时间,但是折腾半天总是有些问题,一个很简单的单页应用都难弄,所以转而学 flask ,结果是好的。 2 、 flask 所需的一些基本用得到的扩展, flask 官方都有维护,这样直接挑选官方的包没有负担,我没遇到你说的选用插件要考眼力。一个 web 程序常规所需的扩展 flask 官方都有维护, Django 自己有;额外的一些扩展, flask 有, Django 少,都不是官方维护的都一样层次不齐。而且这些官方扩展文档写的很清晰,我都看得懂,当然这也许是 python 语言本身的功劳,现在学 swift 后这点体会更深。 3 、只有最初初学的那个阶段才写一个文件,很快接触了蓝图之后,就拓展了文件结构,之后就再也不写 [一个文件] 的应用了,除非真的需要。也就是说 flask 从来也没说写在一个文件是好的,或者不让弄个清晰的结构。 Django 如 LZ 所说,上来结构就很好,但这样恰恰在最初难住我,因为我还不够理解结构化的意义,而 flask 让我最终明白结构的意义。 4 、或许 flask 最终== Django , Ubuntu 最终== macOS ,但都绝对不会是===,差之毫厘,失之千里,这个我也不多解释,深入玩过(踩过不少坑)的人都知道。 哎,不浪费时间争这个了,新手吗,看缘分先遇到什么教程,什么教程看得懂并喜欢就先学哪个了。 3 、 |
8
zhangbohun 2017-01-03 14:11:28 +08:00 via Android 1
轻量的框架,重量的工作,工作量守恒定律。
|
9
av1254 2017-01-03 14:29:28 +08:00
个人觉得新手从 flask 或者 tornado 入手比较好, django 比较时候快速开发
|
10
XIVN1987 2017-01-03 14:31:03 +08:00
赞同楼主,新手还是学个最简单、学的人最多的,,等会了之后再考虑灵活性、扩展性之类的问题
也许 Django 的模板不如 Jinja2 、也许 Django 的 ORM 不如 SQLAlchem 、也许 Django 的 Admin 太呆板定制化困难,,可这都是高手需要考虑的问题,,菜鸟还是先学会怎么搭出个能用的网站来再说吧 |
11
tinybaby365 2017-01-03 14:36:27 +08:00 via iPhone
两者都用过, flask 学习曲线比较陡。推荐 Django !
|
12
mywaiting 2017-01-03 15:19:56 +08:00
|
13
mywaiting 2017-01-03 15:21:32 +08:00 1
Ruby 圈有句话叫 You will end up reinventing Rails, in a horrible way.
其实换到 Python 圈也成立啊。无论你用 Flask 、 Tornado 、 Web.py , You will end up reinventing Django, in a horrible way. |
14
Millyn 2017-01-03 15:24:20 +08:00
我觉得 7 楼说的非常好,
最多是== 不可能是=== . 而且都是 Python 写的 个人觉得不论输赢比较好. 况且, 实际上做大站开发还是 tornado 比较多吧. |
15
lxguidu 2017-01-03 15:28:05 +08:00
既不懂 django ,也不懂 flask 。
|
16
alphadog619 2017-01-03 15:51:53 +08:00
个人也觉得 django 入手比较好。也许是 flask 为了灵活,只给了一个最简单的框架,很多东西由你自己去扩展。所以新手入门的时候参考的教程是一个教程一个写法,看教程都看晕了。
|
17
Wangxf 2017-01-03 16:24:44 +08:00
大而全 vs 小而美, express vs koa , django vs flask
|
18
Cubat 2017-01-03 16:36:53 +08:00 via Android
道理我都懂,可是想学 django 没有可靠的参考书啊
|
20
qwer1234asdf 2017-01-03 16:52:29 +08:00
上手用 django ,新手不会感觉那一坨一坨的回调是什么意思呢?会不会感觉,为毛,我这里要重载这个成员函数呢?。。。
|
24
yanzixuan 2017-01-03 17:36:13 +08:00
@jiangfengbing 我一开始学 django 。发现很多东西不懂,然后看到 FLASK 那本书,就愉快的去学习 flask 了。。
|
25
iniwap 2017-01-03 17:45:54 +08:00
为什么不用 PHP
|
27
jun4rui 2017-01-03 18:01:42 +08:00 via Android
插个嘴, flask 有 Django 那么好用的 admin 了吗?
|
30
loryyang 2017-01-03 18:23:32 +08:00
django 那一坨坨的目录代码我都吓尿了, flask 非常方便入门,从无到有,一点点慢慢补充,需要什么加什么
|
31
cashew 2017-01-03 21:01:52 +08:00 via Android
说的都有道理,但是对于真正零基础入门 python web 的小伙伴来说,还是越简单些越好吧。不然,学着学估计就被吓跑了。
|
32
niuroumian 2017-01-03 21:25:46 +08:00
大家对 Pyramid 怎么看?
|
33
shisaq 2017-01-03 21:29:20 +08:00
最主要是找个好老师。自学能力强的,找自己当老师;自学能力差点的,找搜索引擎当老师;再差点的,得找真人当老师;还不行的话,快转行吧。
|
34
firebroo 2017-01-03 21:37:00 +08:00 via Android
我不想配成 macos , i3wm 的酸爽只有用过的人才知道。
|
35
honmaple 2017-01-04 23:40:15 +08:00
把 flask 用成 django ,把 ubuntu 配置成 macos 的成就感,以及在这之间学到的东西是直接用 django,macos 的人无法想像的。
@firebroo 平铺的酸爽让我在 macos 下只用虚拟机 |
36
Mark24 OP @loryyang 我觉得你的观点挺好。就是自己一点加进去。 Flask 适合学习和步进。最后自己形成一套 Flow 。和使用一组依赖。和 Django 确实是两种风格的。今天感受到 Django 的一种闭塞。就是 Django 的庞大,让我不知道他到底做了多少工作,也很蛋疼。研究 Django 也要花时间。 Web 啊,就是一种很细碎的工作,涉及面多而零碎。
|