加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (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

Weppy的长期计划包括支持异步和套接字作为低级一流实体。 Weppy的开发人员计划在2.0版本中引入这些功能,然后要求所有未来版本的Weppy使用Python 3.7或更高版本。

13个Python web框架比较

Zope2

Zope不适用于简单的RESTful API(每Bottle或Flask),甚至不适用于具有交互性的基本网站(à la Django)。相反,它意味着是一个完整的企业级应用程序服务器堆栈,类似于Java产品。该文档将该框架描述为“对组件开发人员,整合者和Web设计人员最有用。”一个主要的第三方产品Plone CMS使用Zope作为其基础,并作为Zope持续开发的主要驱动力。

Zope通过从Web获取请求,将请求的参数与内部对象数据库(ZODB)匹配,并使用请求的GET或POST参数执行该对象来工作。无论从对象返回什么,都会返回给客户端。 Zope使用此数据库对象系统来简化任务,例如分配粒度对象权限,为对象提供继承层次结构,以及处理数据库对象的事务和回滚。

由于Zope的尺寸和复杂性,安装需要一些工作;这不是简单地将源解压缩到项目子文件夹中的问题。一些设置过程包括编译C模块,因此在Windows上安装很棘手。自2010年以来,Zope的预打包Windows二进制文件尚未更新,并且围绕它们的文档状态使得很难确定设置的最佳实践。但是,实际框架的文档非常好。 Zope2 Book是一本非常详细的纲要。

当启动Zope并连接到服务器时,将看到Web UI,可以在其中创建和编辑ZODB对象。对象采用三种基本角色之一:内容,逻辑和表示,并且可以包含文档(基本上,任何具有MIME类型的文件),Python脚本和HTML模板。

模板可以是两种类型之一:新的和更灵活的Zope页面模板(ZPT)系统,或旧的和更基本的DTML标记系统。ZPT使用HTML标记中的属性来指示数据的放置位置,从而可以更轻松地使用传统的HTML工具设计模板。但是ZPT语法需要一些时间来习惯。

Zope声称其面向对象方法的优点之一是系统中的每个操作,无论它作用于何种对象,都由事务封装。因此,如果删除存储在Zope数据库中的文件或对一段代码进行破坏性更改,则只需回滚执行它的操作。缺点是很难在这样的代码库上使用像Git这样的现代源代码控制工具,这意味着你将数据放在Zope的自定义数据库工具的支配下。请注意,可以将MySQL之类的外部数据库连接到Zope应用程序,但这主要用于托管应用程序数据,而不是替换ZODB。

与这里讨论的许多较小的,更灵活的框架相比,Zope的遗留和大小转化为许多缺点。最大的缺点是Zope只能在Python 2.x下运行,所以不能利用Python 3库或异步语法,尽管正在努力解决这个问题。 (Zope 4仍处于测试阶段,包括Python 3支持以及更多支持。)

轻量级的Python Web框架

Bottle

Bottle可以被认为是一种迷你烧瓶,因为它比其他“微框架”更加紧凑和简洁。由于其占地面积最小,Bottle非常适合包含在其他项目中或快速交付REST API等小型项目。

Bottle的整个代码库适合单个文件,并且绝对没有外部依赖性。即便如此,Bottle还配备了足够的功能来构建常见的Web应用程序,而无需依赖外部帮助。

Bottle中的路由系统将URL映射到函数,其语法与Flask几乎完全相同。也不仅限于硬连线路径;可以动态创建它们。可以通过Bottle框架中的对象访问和操作请求和响应数据,cookie,查询变量,来自POST操作的表单数据,HTTP标头和文件上载。

每项功能都经过精心细致的实施。例如,使用文件上载,如果文件的命名约定与目标文件系统冲突(例如Windows上的名称中的斜杠),则不必重命名该文件;瓶子可以帮到你。

Bottle包含自己的简单HTML模板引擎。同样,虽然很小,但它已经装配好了必需品。默认情况下,模板中包含的变量使用安全HTML呈现;你必须指出哪些变量可以安全地从字面上重现。如果更换掉模板引擎并使用另一个模板引擎,例如Jinja2,那么Bottle可以帮助轻松完成。我其实喜欢与Bottle捆绑的简单模板系统;它的语法不起眼,它允许混合代码和模板文本而不会有不适当的困难。

Bottle甚至支持多个服务器后端。它配备了自己的内置miniserver以进行快速测试,但可以支持各种兼容WSGI的HTTP服务器,并在需要时可以回退到普通的旧CGI。

Bottle不需要像其他框架那样多的文档,但文档绝不是吝啬。所有关键的东西都适合单个(尽管很长)的网页。除此之外,还可以找到每个API的完整文档,如何在各种基础架构上进行部署的示例,内置模板语言的解释以及一系列常见配方。

与Flask一样,可以手动或通过编写补充瓶的插件扩展Bottle的功能。 Bottle插件列表远不及Flask的大小,但有一些有用的部分,例如与各种数据库层的集成和基本的用户身份验证。对于异步支持,Bottle可以使用异步运行的现有服务器适配器之一,例如aiohttp/uvloop。

Bottle极简主义的一个后果是有些功能根本就不存在。不支持表单验证,包括CSRF保护等功能。如果要构建支持高度用户交互的Web应用程序,则需要自己添加它们。

CherryPy

CherryPy已经存在了超过10年,但并没有失去最初区分它的极简主义和优雅。

这个框架的前提是,除了只包含为web页面提供服务所需的少量内容外,它应该尽可能地让人感觉它不像“web框架”,而是像任何其他类型的Python应用程序一样。根据文件显示,Hulu和Netflix等网站在制作中使用了CherryPy,这可能是因为该框架提供了一个高度低调的基础。

CherryPy可以将Web应用程序与核心逻辑区分开来。要将应用程序的功能映射到CherryPy提供的URL或路由,需要创建一个类,其中对象的名称空间直接映射到您要提供的URL;例如,网站的根由名为“index”的函数提供。传递给这些函数的参数用于处理由GET或POST方法提供的变量。

(编辑:核心网)

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

热点阅读