首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
V2EX  ›  Python

Django vs Flask vs Tornado

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

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

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

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

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

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

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

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

    如果你用 asyncio 的话,果断 sanic

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

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

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

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


    如果是零基础,我其实是比较建议 flask,更建议狗书,慢慢累代码上来,对编程这个事其实更有帮助。
        55
    zeromake   36 天前 via Android
    建议随便选一个就好了,真正的技术不会因为你换框架没掉的,主要是快速的开始而不是在找框架的路上
        56
    enrolls   36 天前
    说说我的看法。围绕题主的问题回答,易学度 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/
        57
    spark   35 天前 via iPhone
    初学者不要学 node,公司缺前端就会把你拉过去,然后你会发现这完全是另一个体系,重新学起来吧……
        58
    onelove   35 天前
    之前买过一本基于 python2.7 的狗书,没看下去。重新学了下 python3,因为想要做一个 web 系统,直接开始搞 Django。看文档,看书,一个多月的时间也撸出来了一个又不是不能用的简单的管理系统。

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

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

    什么叫 python 的中级水平呢。
    一、Python 标准库 80%都试过一遍了。
    二、《流畅的 Python 》《 Python CookBook 》这两本书看着很轻松就能理解。
        60
    liwei1990913   34 天前
    Python web 方向很难找工作的,建议别入坑,
        61
    mythmgn   34 天前
    我是先看的 django 然后看的 flask. 后来就再也不想用 django 了
        62
    crazyjin   33 天前
    @xpresslink 我也是这样向对方推荐的,先掌握 python 再学数据库,第三部再研究后端框架、同时补充操作系统和计算机网络知识。
        63
    sazima   33 天前
    我先学的 django 后学的 flask,tornado, 后来彻底放弃 django 了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3230 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 04:56 · PVG 12:56 · LAX 21:56 · JFK 00:56
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1