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

像Bottle或Falcon一样,Tornado省略了与其核心目的无关的特征。例如,Tornado有一个内置的模板系统,用于生成输出(以HTML或其他方式)和国际化,表单处理,cookie设置,用户身份验证和CSRF保护的机制。但是它省略了类似于表单验证和ORM的功能,它们更适合面向用户的Web应用程序。

Tornado擅长为需要严密控制异步网络细节的应用程序提供基础架构。例如,Tornado不仅提供内置的异步HTTP服务器,还提供异步HTTP客户端。因此,Tornado非常适合构建应用程序,例如Web scraper或bot,它们并行查询其他站点并对返回的数据进行操作。

如果正在尝试创建一个使用HTTP以外的协议的应用程序,Tornado会提供帮助。它提供对DNS解析器以及第三方认证服务等实用程序的低级TCP连接和套接字的访问,并支持通过WSGI标准与其他框架进行互操作。文档很小但不稀疏,包含了如何完成所有这些的大量示例。

Tornado既利用并补充了Python的异步行为本机功能。如果使用的是Python 3.5,Tornado支持内置的异步和等待关键字,它们可以为应用程序提供速度提升。对于早期版本的Python,可以使用yield语句。在任何一种情况下,都可以使用期货或回调来处理对事件的响应。

Tornado 5.0改进了与Python的本机异步功能的集成。因此不再支持Python 3.3,并且Python 3.5用户必须使用Python 3.5.2或更高版本。 Tornado 6.0将需要Python 3.5及更高版本,并将完全放弃Python 2支持。

13个Python web框架比较
  1. 文档描述为“类BSD”.
  2. 由同一作者通过单独的库提供。
  3. 支持SQLAlchemy作为标准ORM但不包括在内。
  4. Tornado wiki中提供的链接。
  5. 可通过第三方扩展程序获得。

Tornado还提供了一个同步原语库,信号量,锁等,以协调异步协程之间的事件。请注意,与Python解释器本身一样,Tornado通常运行单线程,因此这些原语与其线程名称不同。 但是,如果想在并行进程中运行Tornado以利用多个套接字和内核,那么可以使用这些工具。

Tornado的文档涵盖了框架中的每个主要概念以及模型中的所有主要API。 虽然它包含一个示例应用程序(网络抓取工具),但它主要用于演示Tornado的排队模块。

Web.py

Web.py最初是由已故的Aaron Swartz创建的,并被用作Reddit的原始基础。尽管Reddit可能已经从Web.py转移,但Web.py继续由其他人维护,主要是Anand Chitipothu。在范围和设计上,Web.py类似于Bottle和Flask;你可以把它当作一个基本的骨架,然后在它上面构建,而不会感觉太受限制。

要调用基本的Web.py实例,需要做的就是传递一个URL和函数映射列表。 URL可以包含带有捕获参数的正则表达式,允许使用/users/RayB或/article/451等格式从URL中提取数据。 Bottle具有类似的机制,但也提供了确保参数符合某些标准的方法(例如,它们只能是整数)。

Web.py在很大程度上保持干净和朴素,因为它不会尝试承担其他机制更好处理的任务。例如,没有本机功能允许从Web.py堆栈提供静态内容;说明明智地建议改为通过Web服务器。相比之下,Bottle具有提供静态内容的本机功能,尽管它是可选的。 Web.py还包括cookie和会话管理,甚至还有一个简单的输出缓存。

Web.py有一个HTML模板系统;它是非常基本的,但允许if/then/else逻辑。更复杂,更有用的是Web.py的动态生成HTML表单的系统,具有CSS样式的类属性和基本的表单验证机制。如果希望使用以编程方式生成的表单(例如基本数据库资源管理器)生成应用程序,这将非常方便。

Web.py的文档与框架本身一样小,但它并没有提供相关的示例。 “cookbook”部分(多种语言,不低于)演示了许多常见用例(提供静态内容,逐步传输大型文件等)。甚至还有一个使用该框架构建的真实Web应用程序库,其中许多都带有源代码。

请注意,Web.py并未像其他框架一样保持与Python 3兼容性的最新状态。这不仅意味着缺乏对异步语法的支持,还意味着缺少对已弃用的函数的错误。此外,目前尚不清楚维护者是否有计划在Python 2到达其支持生命周期结束后保持Web.py的最新状态。

Wheezy.web

Wheezy.web是Web框架的Flask/Bottle/Pyramid模型:小巧轻便,专注于提供高速和高并发性。这个功能集的核心是小的,但它的创建者已经为它配备了各种必备功能。

谈论Wheezy.web作为单一产品有点误导。Wheezy.web将同一作者创建的其他几个库粘合在一起,每个库根据希望应用程序的操作提供不同的服务。例如,Wheezy.http库被Wheezy.web大量用于许多基本行为,但除非应用程序必须执行用户身份验证,否则不需要Wheezy.security库。

这种库集合方法意味着使用Wheezy开发的最简单方法是从PyPI安装它或使用easy_install来收集所有相关的包。我在Python 3.51中使用easy_install时遇到了问题,但它在Python 2.7中运行良好。

Wheezy.web的核心主要是将路由映射到函数和处理重定向,但它配备了一些其他有用的功能。例如,使用@secure装饰器标记的任何路由将仅接受HTTPS请求,并且如果进行HTTP连接尝试将重定向到HTTPS。另一个核心添加是中间件,以便可以自定义路径路由和HTTP错误。

Wheezy的其他库涵盖了一组相当丰富的用例。Wheezy.validation可以帮助确保提交的数据满足特定条件,例如,用户名或密码满足长度或复杂性要求。Wheezy.caching允许缓存未更改的响应以加速处理,Wheezy.captcha与Python的PIL/Pillow图像库集成以生成验证码。对于国际化,它与标准GNU gettext实用程序集成。

(编辑:核心网)

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

热点阅读