我觉得新手还是 Django 开始吧

2017-01-03 13:34:45 +08:00
 Mark24

之前有 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 开始。

7542 次点击
所在节点    Python
36 条回复
ruanimal
2017-01-03 13:42:35 +08:00
是的,和我看法差不多
Mark24
2017-01-03 13:45:14 +08:00
我在想,指定特定的功能,逻辑是守恒的,当你去实现的和拆分一定是>= 纯实现逻辑。

ORM ,路由,模板渲染,用户认证,这些基本上本来就需要。交给不同人,就会产生很多冗余。

我想如果 Flask 同等条件下把功能 拼凑成 Django ,应该比 Django 本身还大,速度还慢才对。 Django 内部的系统,沟通起来应该更顺畅一些。

还是就是 Django 的写法比较一致。 Flask 的会被插件,组件所左右和捆绑。

我们常听到, Django 会捆绑用户,但是 Flask 只是换了个方式捆绑用户罢了,用插件捆绑用户。而这种捆绑有着更大的不确定性,因为依赖了插件作者——如果全部重头自己来——别忘了,我们的目的,只是想又快又好的构建 web 而已。而不像陷入造轮子的汪洋大海里。

这是我的个人理解。
我倾向于推荐整体方案。 Django 的那套学会,完全可以参考 Django ,使用 Flask 的灵活性,去按照设计思想构建自己的框架。

但是刚开始,对于新人,清晰度,完整性,更重要。灵活性对新人反而有害,不利于交流(如果大家用的组件都不一样,就完了。这是我看书的经验。每本 Flask 的作者都倾向于用自己挑选的一套组件解决问题。很难交流。书具有时间的滞后性。)
ty89
2017-01-03 13:53:06 +08:00
个人开发者:建议用 django
团队开发:建议用 flask
AlexaZhou
2017-01-03 13:55:23 +08:00
这两个都太复杂了,相比起来我更推荐 Tornado
clino
2017-01-03 13:59:08 +08:00
sudoz
2017-01-03 14:00:07 +08:00
认同, Python Web 最开始我是从 Django 入手,后来用 Flask ,前后比较基本上如楼主所言
qq7171891
2017-01-03 14:07:20 +08:00
如果 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 、
zhangbohun
2017-01-03 14:11:28 +08:00
轻量的框架,重量的工作,工作量守恒定律。
av1254
2017-01-03 14:29:28 +08:00
个人觉得新手从 flask 或者 tornado 入手比较好, django 比较时候快速开发
XIVN1987
2017-01-03 14:31:03 +08:00
赞同楼主,新手还是学个最简单、学的人最多的,,等会了之后再考虑灵活性、扩展性之类的问题

也许 Django 的模板不如 Jinja2 、也许 Django 的 ORM 不如 SQLAlchem 、也许 Django 的 Admin 太呆板定制化困难,,可这都是高手需要考虑的问题,,菜鸟还是先学会怎么搭出个能用的网站来再说吧
tinybaby365
2017-01-03 14:36:27 +08:00
两者都用过, flask 学习曲线比较陡。推荐 Django !
mywaiting
2017-01-03 15:19:56 +08:00
mywaiting
2017-01-03 15:21:32 +08:00
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.
Millyn
2017-01-03 15:24:20 +08:00
我觉得 7 楼说的非常好,
最多是== 不可能是=== .
而且都是 Python 写的 个人觉得不论输赢比较好.
况且, 实际上做大站开发还是 tornado 比较多吧.
lxguidu
2017-01-03 15:28:05 +08:00
既不懂 django ,也不懂 flask 。
alphadog619
2017-01-03 15:51:53 +08:00
个人也觉得 django 入手比较好。也许是 flask 为了灵活,只给了一个最简单的框架,很多东西由你自己去扩展。所以新手入门的时候参考的教程是一个教程一个写法,看教程都看晕了。
Wangxf
2017-01-03 16:24:44 +08:00
大而全 vs 小而美, express vs koa , django vs flask
Cubat
2017-01-03 16:36:53 +08:00
道理我都懂,可是想学 django 没有可靠的参考书啊
owlsec
2017-01-03 16:44:09 +08:00
@Cubat 官方文档。
qwer1234asdf
2017-01-03 16:52:29 +08:00
上手用 django ,新手不会感觉那一坨一坨的回调是什么意思呢?会不会感觉,为毛,我这里要重载这个成员函数呢?。。。

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

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

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

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

© 2021 V2EX