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 · 8433 次点击
    这是一个创建于 3635 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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一个问题,异步会传染
    jyjmrlk
        14
    jyjmrlk  
       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   ·   实用小工具   ·   996 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 20:43 · PVG 04:43 · LAX 12:43 · JFK 15:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.