推荐学习书目
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 · Jan 3, 2017 · 8096 views
    This topic created in 3460 days ago, the information mentioned may be changed or developed.

    之前有 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 replies    2017-01-05 17:47:51 +08:00
    ruanimal
        1
    ruanimal  
       Jan 3, 2017
    是的,和我看法差不多
    Mark24
        2
    Mark24  
    OP
       Jan 3, 2017   ❤️ 1
    我在想,指定特定的功能,逻辑是守恒的,当你去实现的和拆分一定是>= 纯实现逻辑。

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

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

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

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

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

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

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


    @firebroo 平铺的酸爽让我在 macos 下只用虚拟机
    Mark24
        36
    Mark24  
    OP
       Jan 5, 2017
    @loryyang 我觉得你的观点挺好。就是自己一点加进去。 Flask 适合学习和步进。最后自己形成一套 Flow 。和使用一组依赖。和 Django 确实是两种风格的。今天感受到 Django 的一种闭塞。就是 Django 的庞大,让我不知道他到底做了多少工作,也很蛋疼。研究 Django 也要花时间。 Web 啊,就是一种很细碎的工作,涉及面多而零碎。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1466 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 87ms · UTC 16:49 · PVG 00:49 · LAX 09:49 · JFK 12:49
    ♥ Do have faith in what you're doing.