V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Mark24
V2EX  ›  Python

我觉得新手还是 Django 开始吧

  •  1
     
  •   Mark24 ·
    Mark24Code · 2017-01-03 13:34:45 +08:00 · 7403 次点击
    这是一个创建于 2641 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    36 条回复    2017-01-05 17:47:51 +08:00
    ruanimal
        1
    ruanimal  
       2017-01-03 13:42:35 +08:00
    是的,和我看法差不多
    Mark24
        2
    Mark24  
    OP
       2017-01-03 13:45:14 +08:00   ❤️ 1
    我在想,指定特定的功能,逻辑是守恒的,当你去实现的和拆分一定是>= 纯实现逻辑。

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

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

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

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

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

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

    也许 Django 的模板不如 Jinja2 、也许 Django 的 ORM 不如 SQLAlchem 、也许 Django 的 Admin 太呆板定制化困难,,可这都是高手需要考虑的问题,,菜鸟还是先学会怎么搭出个能用的网站来再说吧
    tinybaby365
        11
    tinybaby365  
       2017-01-03 14:36:27 +08:00 via iPhone
    两者都用过, flask 学习曲线比较陡。推荐 Django !
    mywaiting
        12
    mywaiting  
       2017-01-03 15:19:56 +08:00
    mywaiting
        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.
    Millyn
        14
    Millyn  
       2017-01-03 15:24:20 +08:00
    我觉得 7 楼说的非常好,
    最多是== 不可能是=== .
    而且都是 Python 写的 个人觉得不论输赢比较好.
    况且, 实际上做大站开发还是 tornado 比较多吧.
    lxguidu
        15
    lxguidu  
       2017-01-03 15:28:05 +08:00
    既不懂 django ,也不懂 flask 。
    alphadog619
        16
    alphadog619  
       2017-01-03 15:51:53 +08:00
    个人也觉得 django 入手比较好。也许是 flask 为了灵活,只给了一个最简单的框架,很多东西由你自己去扩展。所以新手入门的时候参考的教程是一个教程一个写法,看教程都看晕了。
    Wangxf
        17
    Wangxf  
       2017-01-03 16:24:44 +08:00
    大而全 vs 小而美, express vs koa , django vs flask
    Cubat
        18
    Cubat  
       2017-01-03 16:36:53 +08:00 via Android
    道理我都懂,可是想学 django 没有可靠的参考书啊
    owlsec
        19
    owlsec  
       2017-01-03 16:44:09 +08:00
    @Cubat 官方文档。
    qwer1234asdf
        20
    qwer1234asdf  
       2017-01-03 16:52:29 +08:00
    上手用 django ,新手不会感觉那一坨一坨的回调是什么意思呢?会不会感觉,为毛,我这里要重载这个成员函数呢?。。。
    Cubat
        21
    Cubat  
       2017-01-03 17:16:15 +08:00 via Android
    @owlsec 不不不,我只是在抱怨市面上卖 django 的书太少了
    owlsec
        22
    owlsec  
       2017-01-03 17:20:07 +08:00
    @Cubat 我意思是你为啥不去看文档而去看书呢?一般书出来就落后了。一切以官方文档为准啊。
    yanzixuan
        23
    yanzixuan  
       2017-01-03 17:34:44 +08:00
    @ty89 没说反?
    yanzixuan
        24
    yanzixuan  
       2017-01-03 17:36:13 +08:00
    @jiangfengbing 我一开始学 django 。发现很多东西不懂,然后看到 FLASK 那本书,就愉快的去学习 flask 了。。
    iniwap
        25
    iniwap  
       2017-01-03 17:45:54 +08:00
    为什么不用 PHP
    nellace
        26
    nellace  
       2017-01-03 17:52:53 +08:00
    @iniwap 实力拉一波仇恨.........
    jun4rui
        27
    jun4rui  
       2017-01-03 18:01:42 +08:00 via Android
    插个嘴, flask 有 Django 那么好用的 admin 了吗?
    ericls
        28
    ericls  
       2017-01-03 18:09:05 +08:00 via iPhone
    @Cubat Django 最大的感触就是官方文档太好了 根本不需要额外的东西
    Mark24
        29
    Mark24  
    OP
       2017-01-03 18:12:17 +08:00
    @iniwap 因为对 Py 爱的深沉 :D
    loryyang
        30
    loryyang  
       2017-01-03 18:23:32 +08:00
    django 那一坨坨的目录代码我都吓尿了, flask 非常方便入门,从无到有,一点点慢慢补充,需要什么加什么
    cashew
        31
    cashew  
       2017-01-03 21:01:52 +08:00 via Android
    说的都有道理,但是对于真正零基础入门 python web 的小伙伴来说,还是越简单些越好吧。不然,学着学估计就被吓跑了。
    niuroumian
        32
    niuroumian  
       2017-01-03 21:25:46 +08:00
    大家对 Pyramid 怎么看?
    shisaq
        33
    shisaq  
       2017-01-03 21:29:20 +08:00
    最主要是找个好老师。自学能力强的,找自己当老师;自学能力差点的,找搜索引擎当老师;再差点的,得找真人当老师;还不行的话,快转行吧。
    firebroo
        34
    firebroo  
       2017-01-03 21:37:00 +08:00 via Android
    我不想配成 macos , i3wm 的酸爽只有用过的人才知道。
    honmaple
        35
    honmaple  
       2017-01-04 23:40:15 +08:00
    把 flask 用成 django ,把 ubuntu 配置成 macos 的成就感,以及在这之间学到的东西是直接用 django,macos 的人无法想像的。


    @firebroo 平铺的酸爽让我在 macos 下只用虚拟机
    Mark24
        36
    Mark24  
    OP
       2017-01-05 17:47:51 +08:00
    @loryyang 我觉得你的观点挺好。就是自己一点加进去。 Flask 适合学习和步进。最后自己形成一套 Flow 。和使用一组依赖。和 Django 确实是两种风格的。今天感受到 Django 的一种闭塞。就是 Django 的庞大,让我不知道他到底做了多少工作,也很蛋疼。研究 Django 也要花时间。 Web 啊,就是一种很细碎的工作,涉及面多而零碎。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3318 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:12 · PVG 21:12 · LAX 06:12 · JFK 09:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.