选择一个 Python Web 框架:Django vs Flask vs Pyramid 已翻译 100%

蓝翔招生办 投递于 2014/11/03 09:46 (共 23 段, 翻译完成于 11-06)
阅读 52331
收藏 189
8
加载中

获取午餐的查询语法和Flask的很相似,这是因为这两个demo应用使用了流行的SQLAlchemy ORM来提供持久存储。在Pyramid中,允许你直接返回模板上下文的字典,而不是要调用特殊的render函数。@view_config装饰器自动将返回的上下文传入要渲染的模板。避免调用render方法使得Pyramid写的函数更加容易测试,因为它们返回的数据没有被模板渲染对象掩盖。

@view_config(route_name='newlunch',
             renderer='templates/index.pt',
             request_method='POST')
def newlunch(request):
    l = Lunch(
        submitter=request.POST.get('submitter', 'nobody'),
        food=request.POST.get('food', 'nothing'),
    )

    with transaction.manager:
        DBSession.add(l)

    raise exc.HTTPSeeOther('/')

从Pyramid的请求对象中更加容易得到表单数据,因为在我们获取时会自动将表单POST数据解析成dict。为了阻止同一时间多并发的请求数据库,ZopeTransactions模块提供了上下文管理器,对写入逻辑事物的数据库进行分组,并阻止应用的线程在各个改变时互相影响,这在你的视图共享一个全局session并接收到大量通信的情况下将会是个问题。

Ley
Ley
翻译于 2014/11/05 22:35
1

7. 总结

Pyramid是三个中最灵活的。它可以用于小的应用,正如我们所见,但它也支撑着有名的网站如Dropbox。开源社区如Fedora选择它开发应用,如他们社区中的徽章系统,从项目工具中接受事件的信息,并向用户奖励成就类型的徽章。对于Pyramid的一个最常见的抱怨是,它提供了这么多的选项,以至于用它开始一个新项目很吓人。

目前最流行的框架是Django,使用它的网站列表也令人印象深刻。Bitbucket,Pinterest,Instagram,以及Onion完全或部分使用Django。对于有常见需求的网站,Django是非常理智的选择,也因此它成为中大型网站应用的流行选择。

Ley
Ley
翻译于 2014/11/05 22:43
2

Flask对于那些开发小项目、需要快速制作一个简单的Python支撑的网站的开发者很有用。它提供小型的统一工具,或者在已有的API上构建的简单网络接口。可以快速开发需要简单web接口并不怎么配置的后端项目使用Flask将会在前端获益,如jitviewer提供了一个web接口来检测PyPy just-in-time的编译日志。

这三个框架都能解决我们简单的需求,我们已经看到了它们的不同。这些区别不仅仅是装饰性的,它们将会改变你设计产品的方法,以及添加新特性和修复的速度。因为我们的例子很小,我们看到Flask的闪光点,以及Django在小规模应用上的笨重。Pyramid的灵活并未体现出来,因为我们的要求是一样的,但在真实场景中,新的需求会常常出现。

7.1 致谢

标题图像的logo来自与Flask、Django和Pyramid项目网站。

这篇文章非常感谢它的评阅者,Remy DeCausemaker,Ross Delinger和Liam Middlebrook,忍受了许多初期的草稿。

这篇文章的当前样式来自于Adam Chainz、bendwarn、Serger Maertens、Tom Leo和wichert的评论和修正(名字按字母表顺序)。

Ley
Ley
翻译于 2014/11/05 23:00
2
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(50)

T-d
T-d
django 不错
shanyifeng
shanyifeng

引用来自“faye_tu”的评论

web2py有前途不?
没有
YellowTree
YellowTree
分两次看完!
yzbty23
yzbty23
flask
无所谓了
无所谓了
bottle 和 peewee 这个组合 怎么样?
无所谓了
无所谓了
Pyramid 人气好像很低
dqzhangp
dqzhangp
看完了,基本上还是要自己选择
Isronik
Isronik
tornado听说比较牛,不过没试过。用的flask,加上flask-admin,比较挺接近djangon的管理效果。再加上一堆其它的,目前已经有比较完整的一个框架。
jk409
jk409
flask
shuaia
shuaia
flask
返回顶部
顶部