建议新手从Django开始

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


我在想,指定特定的功能,逻辑是守恒的,当你去实现的和拆分一定是>= 纯实现逻辑。

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

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

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

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

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

但是刚开始,对于新人,清晰度,完整性,更重要。灵活性对新人反而有害,不利于交流(如果大家用的组件都不一样,就完了。这是我看书的经验。每本 Flask 的作者都倾向于用自己挑选的一套组件解决问题。很难交流。书具有时间的滞后性。)

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

Mark24

Everything can Mix.