Python web 几大框架那种适合新手? dalao 来发表下自己的高见 - V2EX
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
1500176279
V2EX    Python

Python web 几大框架那种适合新手? dalao 来发表下自己的高见

  •  2
     
  •   1500176279 2018-03-30 11:43:10 +08:00 via Android 11038 次点击
    这是一个创建于 2750 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,花了一段时间学习基础语法,以及一些相关知识,现在想用更上一层楼!
    第 1 条附言    2018-03-31 01:04:38 +08:00
    感谢各位的意见,以上论坛 62 条提示!谢谢
    56 条回复    2018-04-23 17:53:40 +08:00
    qs
        1
    qs  
       2018-03-30 11:44:24 +08:00
    flask 知名度高的前提下 使用更简单
    forthdim
        2
    forthdim  
       2018-03-30 11:48:55 +08:00
    flask 呗,简单易用
    pimin
        3
    pimin  
       2018-03-30 11:50:21 +08:00 via Android
    flask 上手快一些
    WilliamLin
        4
    WilliamLin  
      &nsp;2018-03-30 11:54:54 +08:00
    flask 或 django
    xpresslink
        5
    xpresslink  
       2018-03-30 11:58:39 +08:00   1
    看你的需求和你本身对 python 语言基础。
    如果你的 python 语言基础也是小白又想马上撸出来点东西,主要是以内容展示为主的项目,那么选 Django。
    如果你的 pthon 基础不错,想做某种服务后端,以 api 为主,需要比较大的灵活度,那么选 flask
    fanhaipeng0403
        6
    fanhaipeng0403  
       2018-03-30 12:14:05 +08:00
    flask
    rogwan
        7
    rogwan  
       2018-03-30 12:14:57 +08:00 via Android
    以为有很多框架可选,其实也就 flask 和 django。其他的要么太老,要么太新,要么太小,要么太大。
    SuperMild
        8
    SuperMild  
       2018-03-30 12:17:40 +08:00
    flask,用来做小项目真的很爽
    SlipStupig
        9
    SlipStupig  
       2018-03-30 12:24:45 +08:00   1
    难道不是 tornado,性能好,轻量化,我从 3.0 用到现在 5.0.....
    lixuda
        10
    lixuda  
       2018-03-30 12:25:58 +08:00
    @SlipStupig 方便吗
    SlipStupig
        11
    SlipStupig  
       2018-03-30 12:28:32 +08:00
    @lixuda 非常方便,文档齐全,更新迅速,大型开发也不成问题.
    详情见官方文档: http://www.tornadoweb.org/en/stable/
    vimiix
        12
    vimiix  
       2018-03-30 12:42:22 +08:00   1
    入门 flask->进阶 django->高手 flask
    vimiix
        13
    vimiix  
       2018-03-30 12:44:03 +08:00
    flask 就是 Dota 里的 SF,农药里的妲己 ,
    wspsxing
        14
    wspsxing  
       2018-03-30 12:44:07 +08:00
    flask 微框架,
    django 大而全的框架,
    sanic 性能好,
    初学者前两个随便选一个就行,另外 tornado 的时代已经过去了。
    Marmot
        15
    Marmot  
       2018-03-30 12:44:32 +08:00
    楼上+1
    xpresslink
        16
    xpresslink  
       2018-03-30 12:46:32 +08:00
    @SlipStupig 我觉得 tornado 的异步网络框架是很强大,非常适合做高并发应用后端。做 web 框架就有点功能上不完善了,特别是异步回调模式不是一般小白能很快上手写代码的,老手都头疼,要是我宁愿用 gevent。
    lauix
        17
    lauix  
       2018-03-30 14:15:11 +08:00
    flask 优化后,比 tornado 并发更高。
    fy
        18
    fy  
       2018-03-30 14:56:17 +08:00
    flask 文档好容易上手。
    tornado 不错但是缺少一些常用的辅助功能。
    不过现在毕竟是前后端分离的时代了,不要模板的话像是 apistar 这种框架也不妨看看。
    另外我以前是 tornado 老用户了,造了一个轮子: https://github.com/fy0/fpage


    @xpresslink #16 异步使用 python3
    mingzizhi
        19
    mingzizhi  
       2018-03-30 14:58:44 +08:00
    flask 确实很方便,我也刚弄 Python,就用的 flask,易学,简单,文档也 OK
    Hopetree
        20
    Hopetree  
       2018-03-30 15:06:59 +08:00
    @vimiix 草丛婊???
    ipwx
        21
    ipwx  
       2018-03-30 15:09:00 +08:00
    @SlipStupig Tornado 性能确实不错,但是建立在你本身 Python 已经很厉害的基础上。如果是新手,还是老老实实用 Flask 或者 Django 吧。
    welkinzh
        22
    welkinzh  
       2018-03-30 15:36:28 +08:00
    flask 入门很快, 接下来可以 django,其实主流也就这两个了
    vimiix
        23
    vimiix  
       2018-03-30 15:39:29 +08:00
    @Hopetree 你知道的有点多
    rogwan
        24
    rogwan  
       2018-03-30 16:10:01 +08:00 via Android   1
    @lauix 优化算上 uwsgi/gunicorn 吗?还是优化 flask 本身模块(除了把阻塞任务用 thread 或队列之外,还没怎么优化过其他功能啦)?
    lauix
        25
    lauix  
       2018-03-30 16:20:12 +08:00   1
    @rogwan

    gunicorn 启动是必须的

    主要还是 gevent + flask 变成协程 ( 加上 gevent 不比 tornado 差,最重要的是不用写 yeid )

    celery + redis 作为异步队列

    基本就搞定了

    本身模块看需求了
    baojiwei
        26
    baojiwei  
       2018-03-30 16:44:27 +08:00
    2020 就不支持 python2 了,为什么不果断的坐上 python3 的船。当然是 sanic。
    wongskay
        27
    wongskay  
       2018-03-30 16:53:20 +08:00
    flask
    YingJie
        28
    YingJie  
       2018-03-30 17:10:32 +08:00 via Android
    没有用 bottle 的吗
    l1093178
        29
    l1093178  
       2018-03-30 17:14:37 +08:00
    新手用 Django,文档很详细,各种 web 开发的坑和最佳实践也写得很清楚了,照着做基本上不会有问题
    一上来就用 Flask 的真的不怕被坑?
    mywaiting
        30
    mywaiting  
       2018-03-30 17:14:41 +08:00   1
    感觉 python 的框架都是哲学问题,没有对错,找个框架入门好了~

    flask 上手快,插件多,但是随着项目的深入,慢慢就是变成一个 django,绝对的
    django 一上来就是大而全,但胜在什么都有,什么都不用自己折腾

    tornado 这货从一出生就开始用到现在,没有啥好也没啥不好,就是用习惯了。flask 的上手快是以各种插件为代价的,模板你要去找 jinja 吧? orm 要找 sqlachemy 吧?这些都需要你自己去熟悉一下

    而且,各种用 flask 和 django 的同学可能忽略了一个基本是事实就是,如果你有工作需要深入到源代码的话,那么 tornado 是一个极好的参考。django 的代码体系复杂而且庞大我就不说了,看 flask 的代码底层还要考虑 Werkzeug,其基于全局变量的 context 处理起来其实也不容易的。

    顺便的,部署 tornado 的项目可以少拖一个 gunicorn 或者 uwsgi 之如此类,少很多坑

    上面那些提及到性能的同学,完全没有必要进行对比。在 pypy/aiohttp/uvloop 的加持下,不是我非要针对谁,你们说的性能都是垃圾。
    mywaiting
        31
    mywaiting  
       2018-03-30 17:19:59 +08:00
    关于性能,补充一点:

    在 pypy/asyncio/uvloop 的加持下,不是我针对谁,包括你们认为的 NodeJS、GoLang、Gevent 啥的,都是垃圾

    有感觉我会被 NodeJS\GoLang 的同学过来喷死,就不说了~

    PHP 才是世界上最好的语言!
    rogwan
        32
    rogwan  
       2018-03-30 17:24:03 +08:00 via Android
    @mywaiting flask 的 context 确实有点魔术方法,django 里不是也有 CONTEXT_PROCESSORS,是类似的吗?
    sciooga
        33
    sciooga  
       2018-03-30 18:29:46 +08:00
    Tornado 省心很多啊
    bucky
        34
    bucky  
       2018-03-30 18:51:56 +08:00
    不推荐 flask 入门,入门重要的是要有一个蓝图,flask 是对后台开发蓝图清楚的人用的,推荐 django, 学了 django 然后又需要可以翻过来学 flask
    mywaiting
        35
    mywaiting  
       2018-03-30 22:10:09 +08:00   2
    @rogwan #32 django 的 context_processors 只是 template 的全局变量吧,跟 flask 不是一个概念的 context

    flask 的 context 分为 App context (_app_ctx_stack) 和 Request context (_request_ctx_stack),理解好这两个概念就是 flask 的关键。flask 基于 werkzeug 的 LocalStack 实现了很精巧的 应用(app) 和 请求(request) 的 context,像 flask g 这样的全局变量好用是好用,要是你想问个为什么,恐怕没有几个自认为懂得 flask 的人答得出来

    因为懂得 flask 背后的原理,我反而觉得 tornado 这样的用 class 来构建 context 的框架更加方便理解,至少跟别人解释起来,真心比 flask 这背后的 LocalProxy 好理解~
    hellolex
        36
    hellolex  
       2018-03-30 22:40:05 +08:00
    @YingJie 用 bottle 写过一个应用后端,非常喜欢这个框架,小巧方便
    wzw
        37
    wzw  
       2018-03-30 23:39:28 +08:00 via iPhone
    @bucky #34 蓝图好用
    simpleapples
        38
    simpleapples  
       2018-03-30 23:52:45 +08:00
    我用 flask 做过一些项目,觉得 flask 的设计是非常精妙的,既可以用来做小项目,也可以使用蓝图,引入各种扩展来用来做大项目。从代码角度来说,也适合由浅入深的学习,可以通过它了解“什么是一个 web 框架”,也可以深入到源码中,理解其 context 的设计原理。

    既然楼主是新手,建议随便找一个框架( django、flask、tornado )深入理解,然后再对比着学习另外两种,选择上不用太纠结,反正都不了解,那就随便找一个了解好了。
    ihuzhou
        39
    ihuzhou  
       2018-03-31 00:01:56 +08:00
    最近有个任务就折腾了下 flask 和 django,个人体会 django 比 flask 稍微好一点,flask 精简,django 全面直接有登录后台权限系统,用起来十分方便。
    xpresslink
        40
    xpresslink  
       2018-03-31 00:31:50 +08:00
    @YingJie 这个以前还真用过写一些运维小工具接口什么的。本质上 flask 就是从 bottle fork 出来的那个装饰器路由方式完全一样。就是因为 flask 作者当年想让 bottle 作者加功能,但是 bottle 作者就是想保持一个文件的框架不同意改,于另起炉子了。不信你拿 bottle 那个 hello world 用 flask 来跑都不用改。
    rogwan
        41
    rogwan  
       2018-03-31 00:32:32 +08:00 via Android
    @mywaiting 明白,就是说 django 大包大揽,自产自销,用不着 App context 这样的可拔插设计(把 flask 的 app.app_context().push()理解成可拔插设计),可以这样理解吗?
    swulling
        42
    swulling  
       2018-03-31 00:51:41 +08:00 via iPhone
    django 适合新手,成熟方便
    flask 有一定经验的,灵活易用
    tornado 适合看代码学习……写的很赞
    lalalakakaka
        43
    lalalakakaka  
       2018-03-31 01:17:53 +08:00
    推荐 bottle。麻雀虽小五脏俱全,不用折腾插件~

    学会 bottle 再转 flask 也不迟
    Linxing
        44
    Linxing  
       2018-03-31 01:50:45 +08:00
    必须是 Flask 写接口真的是杠杆的
    jjx
        45
    jjx  
       2018-03-31 06:23:07 +08:00
    一直在用 bottle+gevent

    对于只提供 api 而言 flask 也很重
    conn4575
        46
    conn4575  
       2018-03-31 08:14:37 +08:00 via Android   1
    如果你有其他语言成熟 web 框架经验的话,推荐 flask,否则请使用 django,我已经看过太多新手用 flask 入手,然后写出来的项目代码结构不堪入目的…
    WinMain
        47
    WinMain  
       2018-03-31 10:02:15 +08:00
    前段时间临时搞一个 web 项目,简单学了下,用的 ngin+gunicorn+gevent+flask+celery,感觉挺好用,一天就上手。。
    hikarugo
        48
    hikarugo  
       2018-03-31 10:29:51 +08:00
    @fy 哥们,眼熟你,你的 id 事名字缩写吗,我的是 fyx....哈哈哈哈
    fy
        49
    fy  
       2018-03-31 16:12:07 +08:00
    @fyxtc #48 没错 2333
    jimi2018
        50
    jimi2018  
       2018-03-31 17:34:10 +08:00
    flask 不错,推荐个 flask 入门的教程:

    http://xc.hubwiz.com/course/562427361bc20c980538e26f?affid=20180331v2ex
    creedowl
        51
    creedowl  
       2018-03-31 18:10:40 +08:00
    有人用 aiohttp 嘛
    vipppppp
        52
    vipppppp  
       2018-04-02 17:55:20 +08:00
    作为一个新手,学了 3 个月 python,然后自己看视频和看资料学习 django
    然后现在在刚刚入职一个月,在做 flask。。。。。
    Jaymiii
        53
    Jaymiii  
       2018-04-03 09:56:44 +08:00   1
    @vipppppp 求问您主要掌握了什么 python 知识,您是计算机专业的吗,应届生还是社招?很想知道能入职大概的要求是怎么样的。希望能传授一些经验
    qsnow6
        54
    qsnow6  
       2018-04-04 22:20:56 +08:00
    月经贴
    Zoomuiet
        55
    ZoomQuiet  
       2018-04-06 08:54:50 +08:00 via iPhone
    Bottle
    是也乎 ()

    不解释…
    vipppppp
        56
    vipppppp  
       2018-04-23 17:53:40 +08:00
    @Jaymiii 不好意思,之前你的回复刚好在我的消息通知下一页,没注意到
    我是通信毕业的,毕业后加入了一家比较大的公司做网络运维,觉得不适合自己,在上班空余的时候就自学,入职不到半年就辞职了,在职期间零零散散学了 2,3 个月 python,然后辞职后,自己学习了 django 二个月,就硬着头皮去面试了。
    大概就掌握了 mysql,计算机网络,还有一些 web 知识和 python 知识,当然还有大学的一些基本的编程基础,其实,觉得找份工作不会很难,主要是好与不好,如果没有很多的资本,我觉得就不要太挑剔公司,为了入个门最重要~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1156 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 23:29 PVG 07:29 LAX 16:29 JFK 19:29
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86