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

2018 年,你选择 Flask 还是 Django?

  •  
  •   bingod · 2018-01-08 13:32:39 +08:00 · 50572 次点击
    这是一个创建于 2516 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在到了 2018 年,后出的 Flask 的人气越来越旺,目前在 GtiHub 有 32200 个 star,而 Django 是 30800 个 star,如果使用 Python 语言,你会选择 Django 还是 Flask, 来作为网站、小程序、App 的后端呢?
    127 条回复    2019-02-16 11:01:31 +08:00
    1  2  
    darkmatter
        1
    darkmatter  
       2018-01-08 13:33:37 +08:00
    说的好,我选择 PHP
    tangwz
        2
    tangwz  
       2018-01-08 13:34:30 +08:00
    18 年应该会试试 gin
    bingod
        3
    bingod  
    OP
       2018-01-08 13:34:54 +08:00
    @darkmatter PHP 一般用哪些 Web 框架?
    HarrisonZ
        4
    HarrisonZ  
       2018-01-08 13:36:10 +08:00 via Android
    18 年试试 golang 吧 gin 很好用
    bingod
        5
    bingod  
    OP
       2018-01-08 13:36:42 +08:00
    @tangwz 刚去看了,性能据说很好,确实很吸引人,也有一试的欲望
    bingod
        6
    bingod  
    OP
       2018-01-08 13:37:31 +08:00
    @HarrisonZ 比 Python 系的都好用吗?配套的东西呢? Gin 有没有比较好的入门材料?
    designer
        7
    designer  
       2018-01-08 13:38:06 +08:00 via iPhone
    我也好纠结
    gjquoiai
        8
    gjquoiai  
       2018-01-08 13:38:33 +08:00   ❤️ 2
    都 2018 年了,该用 sanic 了
    luoyou1014
        9
    luoyou1014  
       2018-01-08 13:38:37 +08:00
    说的好,我用 rails...
    fml87
        10
    fml87  
       2018-01-08 13:40:16 +08:00   ❤️ 1
    自己写着玩的项目用 sanic,公司项目让用啥用啥
    bingod
        11
    bingod  
    OP
       2018-01-08 13:42:02 +08:00
    @designer flask,django,sanic 更纠结了。。。
    wph95
        12
    wph95  
       2018-01-08 13:46:20 +08:00
    sanic 代码质量真的不好
    golang 没泛型 -。-
    ---
    django channel 很有潜力。
    SuperMild
        13
    SuperMild  
       2018-01-08 13:46:56 +08:00
    才发现 sanic,看起来不错!
    Kilerd
        14
    Kilerd  
       2018-01-08 13:48:12 +08:00
    emmmm,我用我自己写的一个 类 koa 的异步框架,反正是 side project 够用。
    notreami
        15
    notreami  
       2018-01-08 13:54:26 +08:00
    嗯,还是上 Spring 吧,为了生态。。。。。
    wellsc
        16
    wellsc  
       2018-01-08 13:58:20 +08:00
    sanic 一点都不 pythonic
    tftk
        17
    tftk  
       2018-01-08 14:16:26 +08:00   ❤️ 4
    都 18 年了,为什么还在讨论 web 框架
    ifsclimbing
        18
    ifsclimbing  
       2018-01-08 14:18:53 +08:00
    Go
    owenliang
        19
    owenliang  
       2018-01-08 14:29:57 +08:00 via Android   ❤️ 2
    都要失业了 还讨论框架。
    keysona
        20
    keysona  
       2018-01-08 14:32:06 +08:00
    并发压力比较的大、业余也成型的会用 go 重写。

    类似后台管理接口这种,会用 flask。怎么方便怎么来。
    rogwan
        21
    rogwan  
       2018-01-08 14:34:56 +08:00 via Android   ❤️ 1
    django 老大哥的历史使命已经完成了,早期的开发者有的已经退休玩音乐去了,flask 后起之秀,学了大哥的长处,结合新时代的需求,sanic 没用过,不好说。
    zhusimaji
        22
    zhusimaji  
       2018-01-08 14:40:23 +08:00
    flask 用的多一点
    sujin190
        23
    sujin190  
       2018-01-08 14:41:03 +08:00
    其实看了下 aiohttp 也不错了
    slgz
        24
    slgz  
       2018-01-08 14:46:09 +08:00   ❤️ 1
    为啥没用人 webpy
    XIVN1987
        25
    XIVN1987  
       2018-01-08 14:49:30 +08:00   ❤️ 1
    这么多选 Go 的,,难道你们用户很多吗(`・ω・´)
    lqf96
        26
    lqf96  
       2018-01-08 14:51:18 +08:00
    说来要是 diesel, hyper, serde, iron 成熟了,后端 api 就可以转向 rust 了
    gjquoiai
        27
    gjquoiai  
       2018-01-08 14:59:31 +08:00
    对了对了还有 pylons 套装可以选~
    invzhi
        28
    invzhi  
       2018-01-08 15:10:26 +08:00
    作为一个先后用过 Flask 和 Django 然后转向 Go 的人,嗯,不用 Nginx,编译了直接跑,挺爽的 :D
    est
        29
    est  
       2018-01-08 15:12:28 +08:00   ❤️ 1
    Sanic 渣渣。

    https://zhuanlan.zhihu.com/p/32518153


    @gjquoiai
    @fml87
    @bingod
    @wph95
    @SuperMild
    @wellsc
    @rogwan


    Python 基于 WSGI 的框架都特么渣!
    wellsc
        30
    wellsc  
       2018-01-08 15:15:29 +08:00
    @est #29 666 Sanic 不是基于 WSGI
    est
        31
    est  
       2018-01-08 15:17:32 +08:00
    @wellsc 我说了两件事。一是 Sanic 渣 。二是 flask/django 等只能以 wsgi 接口工作的也很渣。
    wph95
        32
    wph95  
       2018-01-08 15:20:54 +08:00   ❤️ 1
    "代码质量真的不好" 划重点
    sanic 要么就老老实实的抄 flask

    结果搞个四不像出来 sanic 既不遵守 wsgi 也不遵守 asgi 出了问题还得自己 fix。
    虽然 sanic 估计也发现了这个问题,看 5 个月前的版本更惨。

    > Python 基于 WSGI 的框架都特么渣!

    Instagram, Pinterest, Disqus 笑而不语
    permaylau
        33
    permaylau  
       2018-01-08 15:22:35 +08:00 via Android
    因为 WordPress,所以选择 PHP
    wangkai123
        34
    wangkai123  
       2018-01-08 15:23:19 +08:00
    @est “ flask/django 等只能以 wsgi 接口工作”
    低级黑。。。
    xrlin
        35
    xrlin  
       2018-01-08 15:42:48 +08:00
    @invzhi Golang 单文件部署确实挺爽的,资源占用还少。
    est
        36
    est  
       2018-01-08 15:43:27 +08:00
    @wangkai123 请举反例。
    est
        37
    est  
       2018-01-08 15:43:53 +08:00
    @wph95 腾讯 cgi-bin 笑而不语。
    Daming
        38
    Daming  
       2018-01-08 15:45:40 +08:00
    tornado 难道没人用吗?
    wangkai123
        39
    wangkai123  
       2018-01-08 16:00:18 +08:00
    @est https://github.com/django/daphne
    django 是可以上 asgi 的呀?还是我们讨论的不是同一个问题?
    est
        40
    est  
       2018-01-08 16:01:12 +08:00
    @wangkai123 Django Channels 属于 Django 的一部分吧。2333。我的理解是个外挂。
    bingod
        41
    bingod  
    OP
       2018-01-08 16:05:24 +08:00
    @tftk 请问大佬现在该讨论什么?无服务器架构吗?
    @owenliang 这么悲催,互联网已经快完了?
    wannianma
        42
    wannianma  
       2018-01-08 16:06:43 +08:00
    Go 选 Gin, PHP 选 Laravel
    glues
        43
    glues  
       2018-01-08 16:17:09 +08:00
    都 2018 年了还在纠结 web 框架?
    我用汇编,直接操作网卡数据
    ManjusakaL
        44
    ManjusakaL  
       2018-01-08 16:22:44 +08:00
    @est emmmm 老哥又见面了
    gjquoiai
        45
    gjquoiai  
       2018-01-08 16:24:48 +08:00
    @est emmmm 上次关注 sanic 还是去年年初的事,现在去翻了一下大变样啊
    ManjusakaL
        46
    ManjusakaL  
       2018-01-08 16:24:51 +08:00
    Sanic 是真的渣= =
    ASGI 不支持 /WSGI 不支持
    自己实现的 Gunicorn Worker 还日常玄学 504
    做个插件让你哭
    内部耦合严重到爆
    ManjusakaL
        47
    ManjusakaL  
       2018-01-08 16:28:16 +08:00
    @gjquoiai 现在 Sanic 的源码真的一团乱麻。。= =本来一个很不错的思路结果完成这样= =我也很迷
    之前写过一片水文
    https://zhuanlan.zhihu.com/p/32518153
    ixiaohei
        48
    ixiaohei  
       2018-01-08 16:29:02 +08:00
    会 spring 全家桶的笑而不语,我觉得的 python 还是搞 python 的强项比较好,什么科学计算,机器学习,脚本处理等,python 真心爽。开发 web 我还是觉得 java 真心不错,要并发有并发,要生态有生态,强类型语言,用 IDEA 写起来很爽。就是语法有点啰嗦。
    fy
        49
    fy  
       2018-01-08 16:39:29 +08:00
    基本没用过 flask,tornado 转 aiohttp 用户
    ty89
        50
    ty89  
       2018-01-08 16:47:54 +08:00
    我选 ROR...
    CallMeHoney
        51
    CallMeHoney  
       2018-01-08 16:54:59 +08:00
    说的好 我司用 tornado
    Totato5749
        52
    Totato5749  
       2018-01-08 16:55:31 +08:00
    我选 ROR (笑
    rogwan
        53
    rogwan  
       2018-01-08 16:58:37 +08:00
    @ixiaohei 一版发布,可跑 N 年,java 确实没什么问题。随时应变各个脑筋不清楚的需求变更,又不得不应付的时候,胶水大法省力多了
    Totato5749
        54
    Totato5749  
       2018-01-08 16:58:49 +08:00
    论 star 数,ror 3w8

    另外都 2018 年了,还在讨论性能? 项目实现才是首要吧,性能不够加机器啊,反正便宜不是吗
    g0thic
        55
    g0thic  
       2018-01-08 17:03:30 +08:00
    2018 年了 Python 不都去搞人工智能了吗



    老哥你是用身份证上的头像做的头像么
    KgM4gLtF0shViDH3
        56
    KgM4gLtF0shViDH3  
       2018-01-08 17:04:45 +08:00
    @est #40 django channels 算是是 django 的扩展吧
    stonymoon
        57
    stonymoon  
       2018-01-08 17:08:41 +08:00
    感觉会一个另外一个也能很快就掌握了,纠结的那个时间都能学不少了
    Wichna
        58
    Wichna  
       2018-01-08 17:46:40 +08:00
    小项目用 Flask
    中型项目用 Django 或 Flask
    大型项目用 Java
    atcdef
        59
    atcdef  
       2018-01-08 17:55:52 +08:00
    一直用 flask,django 一听说是大而全,就觉得无爱了,所以连正眼也没看一下。有空时瞧瞧
    codepark
        60
    codepark  
       2018-01-08 17:57:39 +08:00
    难道就我一个用 nodejs 么~
    chenqh
        61
    chenqh  
       2018-01-08 18:11:21 +08:00
    感觉 django 才是最符合 python 哲学的,battery include,开箱即用,如果 python 速度有 nodejs 速度那么快就 好了
    dreampython
        62
    dreampython  
       2018-01-08 18:24:03 +08:00 via iPhone
    学习 python 半年了,就用过 flask,个人感觉很好用,入门很容易; django 以后有机会可以研究下
    huclengyue
        63
    huclengyue  
       2018-01-08 18:25:10 +08:00 via Android
    @ixiaohei 听说可以用 kotlin 写了
    zhuangzhuang1988
        64
    zhuangzhuang1988  
       2018-01-08 18:27:21 +08:00
    django 啊,
    大而全多好,
    用啥 flask
    huclengyue
        65
    huclengyue  
       2018-01-08 18:28:50 +08:00 via Android
    @chenqh 我一直以为 py,比 nodejs 速度快。
    xpresslink
        66
    xpresslink  
       2018-01-08 18:41:07 +08:00
    这个问题有什么可问的,每个框架能存在肯定有优势的场景。
    web 开发本身不是什么高难度的活儿,肯定地说用哪个框架都能干。

    FLASK 和 DJANGO 我都用过,bottle 也用过。选哪个看场景和对框架的熟练程度。
    如果 Python 语言基础不是很精通又想快速撸出来个东西,选 Django
    精通 Python 语言又想稍享受撸的过程选 Flask

    大多数 web 开发都没有什么性能问题,需要性能的开发工作基本上轮不上用 Python 了。
    实现上快速搭建个原型出来快速迭代是选 Python 或 ruby 这类动态语言最常用的场景,
    这肯定要比上来就 java 要少一半以上的代码量和时间的。
    lengyihan
        67
    lengyihan  
       2018-01-08 18:42:12 +08:00 via Android
    php
    lengyihan
        68
    lengyihan  
       2018-01-08 18:42:28 +08:00 via Android
    py 性能不行,
    pynix
        69
    pynix  
       2018-01-08 18:46:51 +08:00
    py 写数据分析,web 用 ror 快。。。。
    jackeylov3
        70
    jackeylov3  
       2018-01-08 18:59:49 +08:00
    狗年,我选择 go 语言
    wujunze
        71
    wujunze  
       2018-01-08 19:15:46 +08:00
    我选择 PHP +Phalcon
    wezzard
        72
    wezzard  
       2018-01-08 19:20:55 +08:00
    PHP
    SlipStupig
        73
    SlipStupig  
       2018-01-08 19:23:04 +08:00
    tornado 跑了三年了,觉得一点没问题
    HarrisonZ
        74
    HarrisonZ  
       2018-01-08 19:44:26 +08:00 via Android   ❤️ 1
    @bingod 主要并发编程很简单,性能也好一些。官方文档足够了
    bingod
        75
    bingod  
    OP
       2018-01-08 20:16:23 +08:00
    @glues 老哥算你狠。。。
    Ziav
        76
    Ziav  
       2018-01-08 20:23:14 +08:00
    说的好,用 Java
    NvSylvanas
        77
    NvSylvanas  
       2018-01-08 20:26:43 +08:00 via iPhone
    Java
    allgy
        78
    allgy  
       2018-01-08 20:28:01 +08:00
    @tangwz
    @HarrisonZ ozzo 不服
    anyfucker
        79
    anyfucker  
       2018-01-08 20:28:27 +08:00
    @slgz 我一直是用 webpy,不过自从作者 2013 年自杀后这框架就没人更新了。。所以今年我把公司原来的 webpy 的项目都改成 tornado 了。
    allgy
        80
    allgy  
       2018-01-08 20:31:37 +08:00
    18 要考虑怎么找女朋友
    mind3x
        81
    mind3x  
       2018-01-08 20:32:33 +08:00 via Android
    乱入一个,有多少人听说过 /用过 JHipster 的?
    ycz0926
        82
    ycz0926  
       2018-01-08 20:38:22 +08:00   ❤️ 1
    有模板的,django
    api,tornado
    统一搞上 pypy。。。。
    ericls
        83
    ericls  
       2018-01-08 21:26:58 +08:00 via iPhone
    如果是 flask 为什么不用 sanic
    lepture
        84
    lepture  
       2018-01-08 22:37:47 +08:00   ❤️ 1
    作爲 Flask 項目組成員,當然是選擇 Flask 呀。今天在 https://lepture.com/en/2018/announcement-of-authlib 裏還提到

    > Flask comes first, Django comes second.
    tmac
        85
    tmac  
       2018-01-08 22:42:49 +08:00 via Android
    @mind3x spring boot 的脚手架
    chengzhoukun
        86
    chengzhoukun  
       2018-01-08 23:14:32 +08:00 via Android
    tornado 吧,对 asyncio 支持不错
    lozzow
        87
    lozzow  
       2018-01-08 23:17:30 +08:00
    @slgz 作者都去世了,很久没维护了
    wingyiu
        88
    wingyiu  
       2018-01-08 23:26:07 +08:00
    django 其他最后都会被开发堆积木对称 django
    renhua
        89
    renhua  
       2018-01-08 23:29:46 +08:00 via iPhone
    2018,为何不用 crow
    billion
        90
    billion  
       2018-01-08 23:31:37 +08:00   ❤️ 1
    你需要知道有一个东西叫做 Sanic,效率是 Flask 的 200 倍,Route 和 Flask 一模一样。
    lepture
        91
    lepture  
       2018-01-08 23:46:13 +08:00
    @billion @ericls route 並不是 Flask 的特點,Flask 的特點是 context 機制。
    blless
        92
    blless  
       2018-01-09 00:57:30 +08:00 via Android
    @billion 仔细看过 sanic
    的 benchmark 的人就不会把 200 倍挂嘴上。sanic 接近 lgo 效率是用 mrk (好像是,手机懒得查了)合并 http 请求,另外极其可能只是个测试一个 helloworld。根本没什么参考意义。自己写两个后端服务调用下就知道这东西其实根本没那么玄乎
    fengdra
        93
    fengdra  
       2018-01-09 01:06:57 +08:00 via Android
    现在有 react,vue 之类的,模板引擎都可以放前端,后端用 jsonrpc 提供数据接口就够了
    OldPanda
        94
    OldPanda  
       2018-01-09 03:47:03 +08:00
    如果仅仅是后端,可以用 sanic,前端用用 angular 或者 vue 都可以
    chengxiao
        95
    chengxiao  
       2018-01-09 06:48:06 +08:00
    Django 吧,东西写出来是用的,怎么快怎么方便怎么来啊,大而全没什么不好的
    jimzhong
        96
    jimzhong  
       2018-01-09 07:50:05 +08:00
    小网站用 django,开发效率高。
    hugee
        97
    hugee  
       2018-01-09 08:40:01 +08:00 via Android
    选 php
    pyufftj
        98
    pyufftj  
       2018-01-09 09:39:44 +08:00
    @jackeylov3 你这个脑洞是真的服
    sujin190
        99
    sujin190  
       2018-01-09 09:45:36 +08:00
    @ycz0926 #82 配 pypy 确实快,但是网上似乎没有什么文章介绍这个 gc 啊,实际使用中这个是个很大的问题,内存使用量、停顿都是很大的问题
    huhujin
        100
    huhujin  
       2018-01-09 09:48:08 +08:00
    django 一票,flask 各种 flask-包一装还不是和 django 一样?网站大了还是上 spring 全家桶,生态好.
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   893 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 22:01 · PVG 06:01 · LAX 14:01 · JFK 17:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.