Python Web 框架的选择 - 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
Kilerd
V2EX    Python

Python Web 框架的选择

  •  
  •   Kilerd
    Kilerd 2015-01-18 00:14:41 +08:00 8835 次点击
    这是一个创建于 3920 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    简单又少的
    bottle

    想做api
    tornado

    话说 我貌似三个框架都提过pr或者小patch…
    sangmingming
        7
    sangmingming  
       2015-01-18 00:32:39 +08:00
    我觉得bottle和flask的注解挺好

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

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

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

    https://github.com/hustlzp/Flask-Boost
    mqingyn616
        45
    mqingyn616  
       2015-01-19 12:13:36 +08:00
    我厂使用的是自己撸的框架 :tornado+torngas

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

    我推荐Flask,如果是全新手,上手有难度,但是这种东西是一通百通,反过来你一上来Django,可能很顺,但是最后可能其实啥啥都不知道。。。
    guguai
        48
    guguai  
       2015-01-21 17:47:16 +08:00
    webpy 的飘过~
    guguai
        49
    guguai  
       2015-01-21 17:48:59 +08:00
    @guguai 按了Ctrl+Enter 就直接发表了,链接还没有写~~~
    我从一开始就是用的webpy,用它写了一个小blog
    http://www.qjwgg.com
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2687 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 14:49 PVG 22:49 LAX 07:49 JFK 10:49
    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