Python Web 框架的选择 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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
Kilerd

Python Web 框架的选择

  •  
  •   Kilerd
    Kilerd Jan 18, 2015 9218 views
    This topic created in 4120 days ago, the information mentioned may be changed or developed.

    RT,大家用Python写Web的时候,都是用什么框架的。
    自己撸一个?

    49 replies    2015-01-21 17:48:59 +08:00
    chon
        1
    chon  
       Jan 18, 2015 via Android
    为何不用现有的开源框架?
    baocaixiong
        2
    baocaixiong  
       Jan 18, 2015
    flask啊
    Kilerd
        3
    Kilerd  
    OP
       Jan 18, 2015
    @chon 为了更好的定制效果?
    @baocaixiong 听说flask会有比较大的代码注入问题?
    chon
        4
    chon  
       Jan 18, 2015 via Android
    @Kilerd 曾经很喜欢搞flask各种定制,结果发现配置完了也就成了另一个Django,于是后来就一直用Django了。
    zhicheng
        5
    zhicheng  
       Jan 18, 2015   1
    作为 Contributor ,自然推荐 Tornado 。
    mengzhuo
        6
    mengzhuo  
       Jan 18, 2015 via iPhone   2
    看需求

    数据库复杂且要求比较多的
    django

    简单又少的
    bottle

    想做api
    tornado

    话说 我貌似三个框架都提过pr或者小patch…
    sangmingming
        7
    sangmingming  
       Jan 18, 2015
    我觉得bottle和flask的注解挺好

    tornado 据说异步挺好。
    virusdefender
        8
    virusdefender  
       Jan 18, 2015 via Android
    Django
    RIcter
        9
    RIcter  
       Jan 18, 2015
    我记得 V2 有很多这种帖子.
    icedx
        10
    icedx  
       Jan 18, 2015 via Android
    来自V2EX 的信仰-tornado
    来自光明联盟-Flask
    yakczh
        11
    yakczh  
       Jan 18, 2015
    还有一个uliweb,貌似没有人用
    9hills
        12
    9hills  
       Jan 18, 2015
    Flask定制了半天发现变Django<_<
    ipconfiger
        13
    ipconfiger  
       Jan 18, 2015
    tornado的异步,呵呵,和node.js一个问题,异步会传染
    yuanji
        14
    yuanji  
       Jan 18, 2015 via Android
    Quixote...
    magine
        15
    magine  
       Jan 18, 2015
    当前在的创业公司在用 Flask , 感觉棒棒哒!
    allencpp
        16
    allencpp  
       Jan 18, 2015
    不是特别推荐django,我比较喜欢一些轻量级的框架譬如webpy tornado
    daiv
        17
    daiv  
       Jan 18, 2015 via iPhone
    要说使用情况,例如个人
    crazyxin1988
        18
    crazyxin1988  
       Jan 18, 2015 via iPad
    比较推荐flask
    自由灵活,小而美
    loading
        19
    loading  
       Jan 18, 2015 via Android
    要么flask,要么tornado
    skybr
        20
    skybr  
       Jan 18, 2015
    要么是Flask一个个装ext装成Django.

    要么是Django一个个拆contrib拆成Flask.
    lianghui
        21
    lianghui  
       Jan 18, 2015
    稍稍番过一些web框架的源码,比如tornado,bottle,flask,cherrypy, webpy。不过最要自己撸可以去试试webob,openstack,pyramid都架在玩意上。 路由风格xml-rpc ,restful,数据模型activerecord或者data-mapper,这些都可以自己去撸。
    tini9
        22
    tini9  
       Jan 18, 2015
    Django并不复杂,不是所有的功能都要学,学最基本的功能就可以上手了
    wingyiu
        23
    wingyiu  
       Jan 18, 2015
    twisted?
    binux
        24
    binux  
       Jan 18, 2015
    如果你喜欢搞一点小的,富交互的,websocket,进程内通信什么的,tornado 异步+单进程方便很多。有消息放内存变量就好了。
    XiLiGe
        25
    XiLiGe  
       Jan 18, 2015 via Android
    我用的是toroado。
    icedx
        26
    icedx  
       Jan 18, 2015 via Android
    Kilerd
        27
    Kilerd  
    OP
       Jan 18, 2015 via Android
    @icedx 别闹
    neoblackcap
        28
    neoblackcap  
       Jan 18, 2015   3
    百分之99%的人用Python搞web开发我都建议去用Django。自己挖坑自己埋得出的经验。很多时候,开发一个程序必要的功能Django已经提供了,没有提供的,也有跟Django很好结合的第三方库提供了。比如celery, django-rest-framework。除非你是很了解你们的业务,那样可以适当的选择flask,tornado。
    否则只要涉及到到什么管理,数据更新,订单。那样百分之百的不管你用什么都会变成Django的样子,想想flask很轻量化啊,但是数据库要不要用orm啊?模版系统要不要啊?授权系统做不做啊?这样的东西搞下来就跟Django一样,还不如直接上Django。至少Django的bug还少点,文档比其他的好无数倍。
    shiny
        29
    shiny  
    PRO
       Jan 18, 2015
    Tornado 的异步会增加工作量。要快速开发而且经验不丰富的情况下不推荐 Tornado。
    neoblackcap
        30
    neoblackcap  
       Jan 18, 2015
    @shiny 若是开始接触的异步处理的人,tornado还真不是很合适。就算是用了也是写同步的代码。不过有写Javascript经验的人,或者说是已经异步处理入门的人,用tornado还是可以的。tornado已经用generator将异步封装了(提供了语法糖?),让异步执行的代码可以用同步的思路写出来,不过前提是一定要去读文档!!!!
    skyduy
        31
    skyduy  
       Jan 18, 2015
    先接触的Django,后接触的Flask。
    Flask一步一步搭,Django给你现成的。
    想深入了解配置和模块分割设计还是学Flask自己搭上去。
    打到最后就是Django了。
    如@skybr所说
    如果让我选择,我选择学Flask 。
    geeklian
        32
    geeklian  
       Jan 18, 2015
    Django用多了,Python都不会写了,怎么办~煮拌!
    shiny
        33
    shiny  
    PRO
       Jan 18, 2015
    @neoblackcap 还有一个文档问题,异步的库比同步的库文档少很多。
    neoblackcap
        34
    neoblackcap  
       Jan 18, 2015
    @shiny 异步反人类思维啊,我们人的思维模式都是流水线的啊,哪里有什么回调啊。所以多线程/进程这样的就很符合人类思维了,一对一,流程不变。就是多线程/进程的资源竞争不好搞。
    likebeta
        35
    likebeta  
       Jan 18, 2015
    @wingyiu twisted
    fakestuff
        36
    fakestuff  
       Jan 18, 2015
    @zhicheng 求tornado详细教程。。
    shiny
        37
    shiny  
    PRO
       Jan 18, 2015
    @neoblackcap 开发的时候无论 nodejs 还是 tornado 都感觉异步思维影响开发速度。
    yetone
        38
    yetone  
       Jan 18, 2015
    @shiny 扯。。。
    shiny
        39
    shiny  
    PRO
       Jan 18, 2015
    @yetone 以 nodejs 为例,逻辑稍微复杂点就要上 async.js 或 promise;缺乏经验时,越写到后面越是一团糟。
    winiex
        40
    winiex  
       Jan 18, 2015
    用 Tornado 的话最好要对 Unix 网络编程、各种 IO 模型以及至少 Tornado AIO、时间驱动部分的代码有一定的了解,这样才不会把优点用缺了。
    winiex
        41
    winiex  
       Jan 18, 2015
    @winiex
    事件驱动。
    vaneoooo
        42
    vaneoooo  
       Jan 18, 2015
    Uliweb使用者路过
    BiggerLonger
        43
    BiggerLonger  
       Jan 18, 2015
    falcon
    hustlzp
        44
    hustlzp  
       Jan 18, 2015
    Flask

    用多了就可以总结出自己用得爽的项目结构:

    https://github.com/hustlzp/Flask-Boost
    mqingyn616
        45
    mqingyn616  
       Jan 19, 2015
    我厂使用的是自己撸的框架 :tornado+torngas

    已开源: https://github.com/mqingyn/torngas
    tanywei
        46
    tanywei  
       Jan 19, 2015
    @hustlzp 说变成django的都是怎么用的?
    whosesmile
        47
    whosesmile  
       Jan 19, 2015
    @shiny ES6标准化了generator了也,看看koa框架可以,我也正在看,然后安装iojs,基本实现了标准化的generator,node的话要加启动参数。

    我推荐Flask,如果是全新手,上手有难度,但是这种东西是一通百通,反过来你一上来Django,可能很顺,但是最后可能其实啥啥都不知道。。。
    guguai
        48
    guguai  
       Jan 21, 2015
    webpy 的飘过~
    guguai
        49
    guguai  
       Jan 21, 2015
    @guguai 按了Ctrl+Enter 就直接发表了,链接还没有写~~~
    我从一开始就是用的webpy,用它写了一个小blog
    http://www.qjwgg.com
    About     Help     Advertise     Blog     API     FAQ     Solana     2762 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 108ms UTC 13:53 PVG 21:53 LAX 06:53 JFK 09:53
    Do have faith in what you're doing.
    ubao msn 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