加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

13个Python Web框架比较,你想使用哪个呢?

发布时间:2018-10-28 04:28:57 所属栏目:移动互联 来源:佚名
导读:Python程序员有很多很好的选择来创建Web应用程序和API;Django,Weppy,Bottle和Flask引领潮流。 如果正在开发一个Web应用程序并且已经选择使用Python作为构建它的语言,那么这是一个明智的选择。Python的开发成熟度,强大的库以及广泛的实际应用使其成为W

CherryPy的文档包含一个方便的教程,介绍了该程序的各个方面。与其他框架教程不同,它不会引导完成一个完整的端到端应用程序,但它仍然有用。这些文档提供了有关各种场景中部署的方便说明,包括虚拟主机,通过Apache和Nginx的反向代理以及许多其他方案。

CherryPy在引擎下使用池化线程,更好地支持多线程服务器适配器。如果想尝试其他方法,CherryPy的非官方第三方分支交换asyncio协程而不是线程。

Falcon

如果正在构建基于REST的API而不是其他任何东西,那么Falcon提供的绝对必要。它的设计精简而快速,几乎没有标准库之外的依赖关系。

Falcon获得“轻薄”标签的原因很大一部分与框架中的代码行数无关。这是因为Falcon在应用程序上几乎没有任何结构。Falcon应用程序所要做的就是指出哪些函数映射到哪些API端点。从给定端点返回JSON只需设置路由并通过Python标准库中的json.dumps函数从中返回数据。对Python 3的async的支持尚未落入Falcon,但正在努力实现这一目标。

Falcon还采用了理智的开箱即用默认设置,因此安装时几乎不需要修改。例如,对于未明确声明的任何路由,默认情况下会引发404。如果要将错误返回给客户端,可以引发与框架捆绑在一起的许多库存异常中的一个(例如HTTPBadRequest)或使用泛型falcon.HTTPError异常。如果需要为给定路线进行预处理或后处理,Falcon也会为这些路径提供挂钩。

Falcon对API的关注意味着用传统的HTML用户界面构建Web应用程序几乎没有。例如,表单处理功能和CSRF保护工具几乎不存在。也就是说,Falcon提供了优雅的选项来扩展其功能,因此可以构建更复杂的项目。除了上面提到的挂钩机制之外,还可以找到一个用于创建中间件的界面,该界面可用于包装所有Falcon的API。

Falcon的文档与其他框架相比比较细长,但仅仅因为它的覆盖范围较小。用户指南包括所有主要功能的正式逐步演练,以及一个快速入门部分,可让您查看带或不带注释的示例代码。

Flask

关于Python中的Web框架的大多数讨论都是从Flask开始提到的,并且有充分的理由。 Flask是一个成熟的,易于理解的框架,广泛使用且非常稳定。使用Flask进行轻量级Web项目或基本REST API几乎不可能出错,但如果试图构建更大的东西,将面临繁重的工作。

Flask的核心吸引力在于其进入门槛低。一个基本的“hello world”Flask应用程序可以在少于10行的Python中设置。广泛使用的HTML模板系统Jinja2附带了使渲染文本变得容易的框架,但是Jinja2可以换成任何数量的其他模板引擎(例如Mustache),或者可以自己动手。

简洁的名称,Flask默认省略了许多细节。例如,它没有开箱即用的数据层或ORM,也没有类似表单验证的规定。但是,它可以通过扩展进行扩展,其中有几十个,包括许多常见用例,如缓存,表单处理和验证,数据库连接等。这种默认设计允许开始设计具有绝对最小功能的Flask应用程序,然后仅在需要时将所需的部分分层。

Flask的文档和蔼可亲,易于阅读。快速入门文档非常出色地帮助启动和运行,同时还解释了为简单的Flask应用程序所做的默认选择的重要性,并且API文档充满了如何使用所有内容的良好示例。同样优秀的是“片段”的集合,这些片段是如何使用Flask完成特定任务的快速和肮脏的示例,例如如果存在如何返回对象,如果不存在则返回404错误。

Flask在2018年早些时候发布了它的里程碑1.0版本,Python 2.6和Python 3.3是支持的最低版本,并且它的许多行为最终都是一成不变的。Flask没有明确支持Python的异步语法,但是为了满足这种需求,已经剥离了一个名为Quart的与Flask相关的API兼容变体。

Pyramid

小而轻,Pyramid比Django更接近Flask甚至Falcon。因此,它非常适合于将现有Python代码公开为REST API,或者为开发人员完成大部分繁重任务的Web项目提供核心的任务。

描述Pyramid极简主义的一个好方法是“无策略”,这是在文档部分中使用的一个术语,用于讨论Pyramid如何与其他Web框架形成对比。你使用什么样的数据库或什么样的模板语言不是金字塔的关注点。

“Pyramid仅提供一种机制来映射URL以查看代码,”文档说,“以及一组用于调用这些视图的约定。可以自由地在您的应用程序中使用符合您需求的第三方组件。“

构建基本的Pyramid应用程序只需要很少的工作。与Bottle和Flask一样,Pyramid应用程序可以包含单个Python文件,除了框架本身的文件。一个简单的单路径API不需要十几行代码。其中大部分是来自... import语句和设置WSGI服务器的样板。

默认情况下,Pyramid包含Web应用程序中常见的几个项目,但它们是作为要拼接在一起的组件提供的,而不是完整的解决方案。例如,包括对用户会话的支持,它甚至还带有CSRF保护。但是对Django提供的用户帐户(例如登录或帐户管理)的支持不是交易的一部分。您必须自己滚动或通过插件添加它。表单处理和数据库连接也是如此。

Pyramid避免过于极小的一种方法是通过提供从Pyramid项目制作模板的方法来重用或重新使用先前的工作。这些模板,即Scaffolds,生成一个带有简单路由和一些入门HTML / CSS模板的Pyramid应用程序。默认情况下,Pyramid包含的支架包括一个示例启动项目和一个通过常用的Python库SQLAlchemy连接到数据库的项目。

Pyramid在测试和调试工具方面同样细长。在Pyramid应用程序中捆绑debugtoolbar扩展,将在应用程序生成的每个网页上获得一个可点击图标,该图标生成有关应用程序执行的详细信息,包括发生错误时的详细回溯。还存在记录和单元测试,即使从这个轻量级的框架中排除两个看起来也很愚蠢的项目。

Pyramid的文档很棒。除了快速浏览基础知识和教程式演练之外,还可以找到一组社区贡献的教程,用于构建各种项目和常用食谱的烹饪手册。后者包括针对大量目标环境的部署技术,从Google App Engine到Nginx。

Pyramid支持Python 2和Python 3,但不使用Python 3的异步语法。有关如何在Pyramid中利用异步的线索,请参阅aiopyramid项目,其中包括用于异步驱动的“hello world”应用程序的脚手架。

Tornado

Tornado是针对特定用例的另一个小框架。Tornado专为构建异步网络应用程序而设计,非常适合创建同时打开大量网络连接并使其保持活动状态的服务,即涉及WebSockets或长轮询的任何内容。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读