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
crazyjin
V2EX  ›  Python

Django vs Flask vs Tornado

  •  
  •   crazyjin · 2019-03-15 22:47:07 +08:00 · 9286 次点击
    这是一个创建于 2080 天前的主题,其中的信息可能已经有所发展或是发生改变。
    python 初学者,目标是从事编程工作。这三个框架该选哪个?大家能帮忙分析一下吗?
    主要是两个方面:易学程度(文档、书籍、视频教学),工作机会。

    我刚刚给人推荐了 Flask,就因为文档和书不错。现在心里惴惴不安。特来请教。

    要不大家投票吧。
    63 条回复    2019-03-20 12:45:00 +08:00
    chroming
        1
    chroming  
       2019-03-15 22:47:49 +08:00 via iPhone
    django
    crazyjin
        2
    crazyjin  
    OP
       2019-03-15 22:51:19 +08:00
    flask
    w2er
        3
    w2er  
       2019-03-15 22:54:38 +08:00 via iPhone
    顺序都排好了么,好吧,图纳豆
    111qqz
        4
    111qqz  
       2019-03-15 22:55:25 +08:00 via Android
    django 吧,同 python 初学者,django 文档还可以
    tomczhen
        5
    tomczhen  
       2019-03-15 23:01:27 +08:00
    个人看法是先学 django,官方文档很完善了,youtube 上教程也很多,最重要是的通过 django 学习 mvc 模型和项目代码结构。

    flask 过于灵活,而异步协程这些对初学者来说真的很难。
    baskershu
        6
    baskershu  
       2019-03-15 23:01:47 +08:00 via iPhone
    github 上 flask 的 star 已经超过 django 了,而且最近找工作感觉 flask 多一点
    crazyjin
        7
    crazyjin  
    OP
       2019-03-15 23:02:39 +08:00
    @tomczhen @111qqz 刚找到了官方中文文档,不错不错。。重新在亚马逊上搜了一下书,也有比较新的。。
    crazyjin
        8
    crazyjin  
    OP
       2019-03-15 23:04:25 +08:00
    @baskershu 我也比较了一下,star 也就差一两千,不过 flask2010 年才开始开发,比 Django 完 5 年。
    0xNone
        9
    0xNone  
       2019-03-15 23:06:42 +08:00
    tornado 现在都没人用了么?确实感觉 django 和 flask 在 jd 中提到的更多
    janxin
        10
    janxin  
       2019-03-15 23:19:44 +08:00
    我推荐先学 django,其次 flask
    busfool
        11
    busfool  
       2019-03-15 23:22:24 +08:00 via Android
    我建议学 flask,工作再学 django
    crazyjin
        13
    crazyjin  
    OP
       2019-03-15 23:41:46 +08:00
    @timqian 这工具相当不错,多谢,现在偏向 django 了。
    Orenoid
        14
    Orenoid  
       2019-03-15 23:47:21 +08:00 via Android
    我建议别学 Python。。
    yeelone
        15
    yeelone  
       2019-03-15 23:54:06 +08:00
    这时候可以从 go 开始学了。
    crazyjin
        16
    crazyjin  
    OP
       2019-03-15 23:58:44 +08:00
    @Orenoid 原因呢?
    crazyjin
        17
    crazyjin  
    OP
       2019-03-16 00:01:44 +08:00
    @yeelone 对方不是计算机专业的,我感觉直接学 go 然后工作的话会有点吃力。。比较 go 需要的专业背景只是应该要多一些。另外 go 的文档、书籍应该没有 python 多。
    crazyjin
        18
    crazyjin  
    OP
       2019-03-16 00:02:40 +08:00
    @yeelone 毕竟 go 编程需要的专业背景只是应该要多一些。
    westoy
        19
    westoy  
       2019-03-16 00:06:40 +08:00
    @crazyjin

    时间差没那么大的,django 开始有人用也得 0.96 了, 而且 1.0 大改过, pocoo 一开始做了个 web 框架(名字忘了), 后来做了个 WSGI 工具包 werkzeug, 再之后搞了个 werkzeug 的官方单文件演示程序 flask, 再之后才把 flask 转正的, 而且两个项目一开始都是自己托管的, 后来才迁到了 github.

    基本上要一体化、方案可控的话就 django, 喜欢灵活一点的就 flask
    crazyjin
        20
    crazyjin  
    OP
       2019-03-16 00:13:00 +08:00
    @westoy 准备重新推荐 django 了,Flask 太灵活了初学者也难把握。
    crazyjin
        21
    crazyjin  
    OP
       2019-03-16 00:32:51 +08:00
    @111qqz 有 django 的好书推荐吗?
    kimomoqueen
        22
    kimomoqueen  
       2019-03-16 00:39:36 +08:00 via Android
    flask->tornado
    Qzier
        23
    Qzier  
       2019-03-16 01:08:38 +08:00 via iPhone
    先 Django 再 flask 最后 tornado
    neoblackcap
        24
    neoblackcap  
       2019-03-16 02:56:02 +08:00
    Django,什么都有,学会就可以干活。
    flask 什么都要自己拼凑,插件质量参差不齐
    ArianX
        25
    ArianX  
       2019-03-16 08:06:09 +08:00 via Android
    建议 go
    111qqz
        26
    111qqz  
       2019-03-16 08:25:28 +08:00 via Android
    @crazyjin 没看过书,感觉文档就足够了
    shuax
        27
    shuax  
       2019-03-16 08:25:34 +08:00 via Android
    小白才做选择,我全都要
    alan0liang
        28
    alan0liang  
       2019-03-16 08:33:00 +08:00 via Android
    建议 koa
    fen
        29
    fen  
       2019-03-16 08:48:23 +08:00   ❤️ 1
    直接上手 Django,有些概念不好理解。如果先用 Flask 上手,门槛会低很多。
    然后拼装各种 Flask 扩展,庞大到一定程度后,再上手 Django 就非常简单易理解了。

    Flask 的坏处在于不同的扩展问题,要查阅不同的文档,向不同的开发者请教。
    Django 基本一站式解决。
    iyaozhen
        30
    iyaozhen  
       2019-03-16 09:04:11 +08:00 via Android
    我建议你要搞 web 找工作的话不要学 Python。
    真的找不到呀
    Orenoid
        31
    Orenoid  
       2019-03-16 09:11:44 +08:00
    @crazyjin 原因就是 30 楼说的,尤其是 web 方向
    silencekxm
        32
    silencekxm  
       2019-03-16 09:17:10 +08:00
    tornado 工业界用的不多吗?
    公司还建议我提前学这个呢
    alphadog619
        33
    alphadog619  
       2019-03-16 09:18:31 +08:00   ❤️ 1
    建议先 django 吧,有助于了解 MVC 的项目结构
    zhze93
        34
    zhze93  
       2019-03-16 09:38:44 +08:00
    自己敲 web 可以拿来入门,但是学 py 目标是从事 web 的话其实不大好,坑比较少,不建议。
    welkinzh
        35
    welkinzh  
       2019-03-16 09:46:39 +08:00 via iPhone
    建议 django,文档写的很好
    TrickWu
        36
    TrickWu  
       2019-03-16 10:13:51 +08:00
    都用过的来说下
    django 就相当于一套很完整的工具,什么都帮你弄好了,结构也非常清晰明了
    tornado 不建议,它优势在于异步,但你必须找到合适异步库来配合它,一不小心就可能写成同步
    flask 就非常灵活,可以找各种扩展,也很轻量,我比较推荐,书的话可以看《 Flask web 开发实战》
    jingniao
        37
    jingniao  
       2019-03-16 10:54:19 +08:00 via Android
    不建议入坑 python。
    Phishion
        38
    Phishion  
       2019-03-16 11:12:55 +08:00
    django 是最稳的解决方案,官方文档写的是我见过最详细的
    yangzhezjgs
        39
    yangzhezjgs  
       2019-03-16 11:48:18 +08:00 via Android
    Python 很难找工作,建议 PHP 或 Java
    spark
        40
    spark  
       2019-03-16 12:00:59 +08:00 via iPhone
    直接 go 或者 node 吧
    keysona
        41
    keysona  
       2019-03-16 12:11:04 +08:00
    初学 flask (精简),进阶 django (全家桶),性能 tornado。

    之后我跑去学 go 了。维护公司老项目( tornado ),新项目都上 go 了。
    crazyjin
        42
    crazyjin  
    OP
       2019-03-16 16:15:15 +08:00
    @keysona @spark @yeelone 现在 go 主要做些什么啊?适合没有计算机专业背景的初学者吗?
    leopku
        43
    leopku  
       2019-03-16 17:20:15 +08:00
    很好
    我选 Sanic
    AllenBigBear
        44
    AllenBigBear  
       2019-03-16 19:23:58 +08:00
    要折腾,学 flask,属于各种轮子都有的,但是需要你自己动手装上去,对入门很不错。。
    要系统化,学 django,后台给你配好了,妥妥的。
    kqz901002
        45
    kqz901002  
       2019-03-16 19:46:24 +08:00
    找工作,Java 选 Spring,Python 选 Django
    自学,无所谓哪个都行
    yeelone
        46
    yeelone  
       2019-03-16 20:00:44 +08:00
    @crazyjin 我以前的入门就是学的 django,后来就转到 go 了。 主要是 golang 部署超级简单。现在用 golang 做了好几个项目, 所以 golang 是我的后端首选 。
    Flasky
        47
    Flasky  
       2019-03-16 20:32:13 +08:00 via Android
    我初学 Web 就是从 Flask 开始的,我之前的一个项目,前端 React,后端 Flask
    Vegetable
        48
    Vegetable  
       2019-03-16 20:36:34 +08:00
    初学者就是 django 吧,django 的体系能帮助初学者更好的理解 Web 开发.不需要自己去 Flask 的世界里探索.
    不过根据我自己的经验来说,用什么框架差不多.
    我从 Django 入门
    现在喜欢用 sanic,喜欢上了 async/await.
    做外包的时候用一般选 Flask.都是看情况的选的,不能只会用一个工具
    tiaod
        49
    tiaod  
       2019-03-16 21:23:05 +08:00
    django 太大太重了
    flask 比较小巧

    如果你用 asyncio 的话,果断 sanic

    当然最后你会发现,web 开发还是 nodejs 爽,我大 JavaScript 才是 web 的语言
    kernel
        50
    kernel  
       2019-03-16 21:52:49 +08:00
    用 tornado 何不 nodejs,天生异步,语言本身速度也更快,typescript 静态类型,吊打 py
    zhuangzhuang1988
        51
    zhuangzhuang1988  
       2019-03-16 21:58:35 +08:00
    动态语言 太难维护
    如果非得用 还是 Django 吧
    crazyjin
        52
    crazyjin  
    OP
       2019-03-16 22:19:18 +08:00
    @zhuangzhuang1988 已经重新向对方推荐 django 了。
    crazyjin
        53
    crazyjin  
    OP
       2019-03-16 22:20:00 +08:00
    @kernel 对方是初学者,没有计算机背景知识。太高端的技术我怕他 hold 不住。想让他先入门再说。
    freakxx
        54
    freakxx  
       2019-03-16 23:36:22 +08:00
    速途同归。

    我入门是由 flask,后面开发用的是 django。

    flask 比较自由,而且整体的理念是比较自由的,但初学者比较难摸到套路。
    django 的话,reuse 的理念比较强,整体的框架还有理念都很好地让人们明白怎么去安排代码。

    django 还有一个好处是 django rest framework,这个东西基本能够把 web 能够遇到的比较烦的东西简化成声明式编程。


    如果是零基础,我其实是比较建议 flask,更建议狗书,慢慢累代码上来,对编程这个事其实更有帮助。
    zeromake
        55
    zeromake  
       2019-03-17 09:54:27 +08:00 via Android
    建议随便选一个就好了,真正的技术不会因为你换框架没掉的,主要是快速的开始而不是在找框架的路上
    enrolls
        56
    enrolls  
       2019-03-17 12:54:41 +08:00
    说说我的看法。围绕题主的问题回答,易学度 Flask, Tornado, Django。F 自由度高,加上中文的文档,入门 hello,之后就看你想造点什么。个人觉得,先是简单认识一下 restful,组织代码的过程中,尽量用 restful 的思路,即 F 里面的 MethodView ;当然也可以写成函数里面一个 mapping-dict 判断 method 选择去向。
    Tornado 同理 Flask。
    至于 Django,强大的没错,新手友好度就一般般了。从 djangogirls 开始入手吧。
    提个问题,前后端分离后,上述 3 个框架,用什么比较好呢?
    像 @zeromake 所说的,开始学习吧,学到关键后,换什么框架都一样。工作方面,Python Web 需要不一定很大,Python ML 更有看头。WEB 路上使用 NODE 或者 GO。我推荐 GO 入门看 https://gobyexample.xgwang.me/
    spark
        57
    spark  
       2019-03-17 13:03:16 +08:00 via iPhone
    初学者不要学 node,公司缺前端就会把你拉过去,然后你会发现这完全是另一个体系,重新学起来吧……
    onelove
        58
    onelove  
       2019-03-17 23:14:21 +08:00
    之前买过一本基于 python2.7 的狗书,没看下去。重新学了下 python3,因为想要做一个 web 系统,直接开始搞 Django。看文档,看书,一个多月的时间也撸出来了一个又不是不能用的简单的管理系统。

    PS:因为是新手,我在电脑上启动服务,局域网访问时大部分时候是正常的,但偶尔也会报错。比如会出现类似 'NoneType' object has no attribute 'split' 的报错信息,请问着这种情况该如何避免?

    作为新手,我搜索了一些相关内容,也没什么头绪。遇到类似问题就是敲回车,让系统继续运行。。。
    xpresslink
        59
    xpresslink  
       2019-03-18 10:37:27 +08:00
    楼主既然是初学 python 就先别学习这个了。
    我的建议是先优先把 python 语言基础提升到中级以上水平,再来学 django 或 flask。
    因为 python 有很多版本了,而 django 的版本也很多,网络上大量的教程文章都是基于不同版本的组合。这些版本造成的差异对于一个 Python 老手基本上不会造成什么困扰,但是新手就很捉鸡了,你的时间会浪费很多在填坑。

    什么叫 python 的中级水平呢。
    一、Python 标准库 80%都试过一遍了。
    二、《流畅的 Python 》《 Python CookBook 》这两本书看着很轻松就能理解。
    liwei1990913
        60
    liwei1990913  
       2019-03-19 10:36:15 +08:00
    Python web 方向很难找工作的,建议别入坑,
    mythmgn
        61
    mythmgn  
       2019-03-19 11:02:50 +08:00
    我是先看的 django 然后看的 flask. 后来就再也不想用 django 了
    crazyjin
        62
    crazyjin  
    OP
       2019-03-19 16:09:07 +08:00
    @xpresslink 我也是这样向对方推荐的,先掌握 python 再学数据库,第三部再研究后端框架、同时补充操作系统和计算机网络知识。
    sazima
        63
    sazima  
       2019-03-20 12:45:00 +08:00
    我先学的 django 后学的 flask,tornado, 后来彻底放弃 django 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2684 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 03:35 · PVG 11:35 · LAX 19:35 · JFK 22:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.