13个Python Web框架比较,你想使用哪个呢?
副问题[/!--empirenews.page--]
Python措施员有许多很好的选择来建设Web应用措施和API;Django,Weppy,Bottle和Flask引领潮水。 假如正在开拓一个Web应用措施而且已经选择行使Python作为构建它的说话,那么这是一个明智的选择。Python的开拓成熟度,强盛的库以及普及的现实应用使其成为Web开拓的必须。 此刻是坚苦的部门:从浩瀚可用的Python web框架中选择一个。它们不只数目在不绝增添,并且很难找到最得当你的。假如你正在构建一个快速而又简朴的REST API,那么你将不必要任何完备的面向用户的应用措施所需的管道和毗连,该应用措施具有效户登录、表单验证和上传处理赏罚就可以了。 在本文中,我们将研究13种最普及陈设的Python web框架。我们将存眷每种web应用措施最得当构建哪种范例的web应用措施,并研究它们如安在以下六个方面彼此竞争: 安装:配置不必要正式的框架项目(它可以简朴地作为包括的模块放到现有的项目中)、启动所需的模板文件起码、可能带有某种预先设置的配置,这是何等轻易或简朴。 文档:险些每一个像样的Python项目都有文档,可以遍历配置、演示根基用例并提供关于API的具体信息。在这里,我们给这样的框架更高的分数:这些框架展示了如安在教程中建设整个应用措施,包罗常见的配方或计划模式,以及超出职责范畴(譬喻提供有关怎样运行的具体信息) Python变体(如PyPy或IronPython)下的框架。 打点:这是相对得分,暗示设置和维护框架必要做几多事变。默认环境下,事变量最小的框架得分更高。 原外行段:包括几多组件?得分较高的是那些为国际化,HTML模板和数据会见层提供原生支持的框架。尚有一些框架行使Python最近引入的异步I/O操纵的原生支持。 安详性:提供原生安详法子(如跨站点哀求伪造(CSRF)掩护和行使加密cookie的会话打点)的框架得到更高的分数。 可伸缩性:大大都Python框架可以操作像Gevent或Gunicorn这样的项目来大局限运行。在这里,我们看一下晋升可伸缩性的框架原生特征,如输出和页面片断缓存。 假如你对机能基准感想好奇,请查察TechEmpower正在举办的一系列试验,这些试验较量了各类使命中的多个Web框架,并将代码和要领宣布到GitHub并举办不绝的从头评估。并非全部接头中的框架都在哪里举办了说明,可是可以很好地相识哪种框架在哪种负载下示意最佳。 我们将说明13个框架。个中五个:CubicWeb,Django,Web2py,Weppy和Zope2,回收“控件”要领,包括你可以想象的Web应用措施所需的大大都成果。别的八个框架: Bottle,CherryPy,Falcon,Flask,Pyramid,Tornado,Web.py和Wheezy.web,提供更简约的外面,买卖营业批量和完备性,简朴易用。 让我们从重量级开始吧。 重量级的Python Web框架 CubicWeb CubicWeb被称为“一个支持重用和面向工具计划的语义Web应用措施框架。”这是一个风趣的体系,夸大行使抽象和可重用的代码块称为“多维数据集”,但对付某些开拓职员来说也许过于抽象或非凡。 多维数据集是具有模式(数据模子),实体(编程逻辑)和视图的软件组件。通过组合多个立方体,每个立方体执行本身的使命,可以通过重用本身的代码和其他代码来编写软件应用措施。 CubicWeb的焦点是提供每个Web应用措施行使的根基搭建原料:用于数据毗连和存储的“存储库”;用于根基HTTP哀求/相应和CRUD操纵的“Web引擎”;以及用于建模数据的模式。全部这些都在Python类界说中描写。要配置和打点CubicWeb的实例,可以行使相同于Django的呼吁行器材。 CubicWeb好像没有行使Python 3的原生异步成果。包括异步的一种迂回方法是行使cubicweb.pyramid模块将Pyramid框架用作Web处事器,并行使异步结构在Pyramid上绘制。可是此刻看起来越发直截了当。 要在CubicWeb应用措施中获取或操纵耐久数据,可以行使相关查询说话(RQL),它回收恍惚的SQL语法,但在W3C的SparQL之后举办模式化。CubicWeb的来由再次是抽象:RQL提供了一种高度疏散的路径来彼此关联各类数据源。可是,跟着它的实现,通过手动构建查询作为字符串,它也许会让风俗于ORM的开拓职员感想过期。 行使CubicWeb尚有其他障碍。起首,配置也许很贫困。由于CubicWeb有许多依靠项,以是最好行使pip install来获取全部依靠项。也许还必需在当地情形中执行必然数目的手动调解。这与运行pip install或将框架代码放入另一个项目标子文件夹的其他框架形成光鲜比拟,这就是所必要的。 另一个隐藏的题目是穷乏本机模板引擎;天生HTML留给开拓职员。可以通过行使像Jinja2这样的第三方模板体系或选择为Web UI提供器材的多维数据集来降服这个题目,譬喻Boostrap HTML框架的器材。 CubicWeb的一个恒久题目,缺乏Python 3支持,今朝已包办理。制止2016年6月的版本3.23,CubicWeb支持Python 3,但Twisted等模块自己并未完全移植。 与Web2py一样,CubicWeb将其冗长的文档称为“书本”。它必要时刻来表明CubicWeb的不通俗要领,演示怎样构建一些根基应用措施,包罗API引用,而且凡是不会特定的方法。 Django 自Django初次呈现以来已经有十年,它已经成为Python最普及陈设的用于建设Web应用措施的框架之一。 Django配备了你也许必要的大部门组件,因此它倾向于构建大型应用措施而不是小型应用措施。 颠末多年在版本1.x后,Django最近在小数点的左边建设了一个版本。 Django 2.0中最大的变革是框架此刻只合用于Python 3.4及更高版本。抱负环境下,你应该行使Python 3.x,以是行使Django的1.x分支的独一缘故起因是你碰着了旧版本的Python。 Django吸引力的一个要害部门是陈设速率。由于它包括了开拓平凡Web应用措施所需的很多部门,以是可以快速动作。路由,URL理会,数据库毗连(包罗ORM),表单验证,进攻掩护和模板都是内置的。 将找到最常见的Web应用措施方案的构建块。譬喻,用户打点可在大大都网站上找到,因此Django将其作为尺度元素提供。Django自己具有这些成果,而不必建设本身的体系来跟踪用户帐户,会话,暗码,登录/注销,打点员权限等。它们可以按原样行使或扩展,以包括起码量事变的新用例。 ![]()
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |