Pyramid 比 Flask 实用于更大年夜更复杂的应用法度榜样. 因为这一点,它的 bootstrapping对象创建更大年夜的项目骨架. Pyramid 同样参加了根本的设备文件,一个例子模版和用于将法度榜样打包上传到 Python Package Index的所有文件。
Pyramid, Django, 和 Flask都是优良的框架,为项目选择个中的哪一个都是伤脑筋的事。我们将会用三种框架实现雷同功能的应用来更轻易的比较三者。也可以直接跳到框架拭魅战(Frameworks in Action)章节查看代码(code)。
1. 简介
世界上可选的基于Python的web框架有很多。Django, Flask, Pyramid, Tornado, Bottle, Diesel, Pecan, Falcon等等,都在争夺开辟者支撑。作为一开辟者大年夜一堆选择中筛选出一个来完成项目将会成为下一?大年夜工程。我们今天专注于Flask, Pyramid, 和 Django。它们涵盖了大年夜小微项目到企业级的web办事。
为了更轻易在三者中作出选择(至少更懂得它们),我们将用每一个框架构建同样的应用处比较它们的代码,对于每一个办法我们会高亮显示它的长处和缺点。如不雅你只想要代码,直接跳到框架拭魅战章节(Frameworks in Action),或者查看其在Github上的代码。
Flask是一个面向简单腥缬小型应用的“微框架(microframework)”。Pyramid和Django都是面向大年夜型应用的,然则有不合的拓展性和灵活性。Pyramid的目标是更灵活,可以或许闪开辟者为项目选择合适的对象。这意味着开辟者可以或许选择数据库、URL构造、模板类型等等。Django目标是囊括web应用的所有内容,所以开辟者只须要打开箱子开端工作,将Django的模块拉进箱子中。
Django包含一个开箱即竽暌姑的 ORM ,而Pyramid和 Flask闪开辟者本身选择若何或者是否存储他们的数据。到今朝为止对于非Django的web应用来说最风行的ORM是SQLAlchemy,同时还有多种其他选择,大年夜 DynamoDB和MongoDB 到简单本地存储的LevelDB 或朴实的SQLite。Pyramid被设计为可应用任何数据持久层,甚至是还没有开辟出来的。
2.关于框架
Django的”batteries included” 特点闪开辟者不须要提前为他们的应用法度榜样基本举措措施做决定,因为他们知道Python已经深刻到了web应用傍边。Django已经内建了模板、表单、路由、认证、根本数据库治理等等。比较起来,Pyramid包含路由和认证,然则模板和数据库治理须要额外的库。
METAL(宏扩大模板属性说话)是Chameleon模板最强大年夜的(和复杂的)一部分。宏是可扩大的,并能被定义为带有槽且当宏被调用时可以被填充。
前面为 Flask和Pyramid apps选择组件的额外工作给那些应用案例不实用标准ORM的开辟者供给了更多的灵活性,同样也给应用不合工作流和模版化体系的开辟者们带来了灵活性。
Flask,作为三个框架琅绫擎最稚气的一个,开端于2010年年中。Pyramid框架是大年夜Pylons项目开端的,在2010岁尾获得 Pyramid这个名字,固然在2005年就已经宣布了第一个版本。Django 2006年宣布了第一个版本,就在Pylons项目(最后叫Pyramid)开端之后。Pyramid和Django都是异常成熟的框架,积聚了浩瀚插件和扩大以知足难以置信的巨大年夜需求。
固然Flask汗青相对更短,但它可以或许进修之前出现的框架并且把留意力放在了渺小项目上。它大年夜多半情况被应用在一些只有一两个功能的小型项目上。例如 httpbin,一个简单的(但很强大年夜的)调试和测试HTTP库的项目。
3. 社区
最具活力的社区当属Django,其有80,000个StackOverflow问题和一系列来自开辟者和优良用户的优胜的博客。Flask和Pyramid社区并没有那么大年夜,但它们的社区在邮件列表和IRC上相当活泼。StackOverflow上仅有5,000个相干的标签,Flask比Django小了15倍。在Github上,它们的star近乎相当,Django有11,300个,Flask有10,900个。
三个框架都应用的是BSD衍生的协定。Flask和Django的协定是BSD 3条目,Pyramid的Repoze Public License RPL是BSD协定 4条目的衍生。
4. Bootstrapping
Django和Pyramid都内建bootstrapping对象。Flask没有包含类似的对象,因为Flask的目标用户不是那种试图构建大年夜型MVC应用的人。
4.1 Flask
Flask的hello world应用异常的简单,仅仅单个Python文件的7行代码就够了。
- # from http://flask.pocoo.org/ tutorial
- from flask import Flask
- app = Flask(__name__)
- @app.route("/") # take note of this decorator syntax, it's a common pattern
- def hello():
- return "Hello World!"
- if __name__ == "__main__":
- app.run()
这是Flask没有bootstrapping对象的原因:没有它们的需求。大年夜Flask主页上的Hello World特点看,没有构建Python web应用经验的开辟者可以急速开端hacking。
推荐阅读
【51CTO.com原创稿件】在大年夜数据、云计算、移动互联网技巧的推动下,企业将得以由“泛数字化”向“聪明化”转型,经由过程实现聪明化应用、聪明化平台、聪明化互联、聪明化计算,塑造企业顶层>>>详细阅读
本文标题:Python Web框架:Django vs Flask vs Pyramid
地址:http://www.17bianji.com/lsqh/37298.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示