📜  金字塔框架

📅  最后修改于: 2020-11-06 06:07:40             🧑  作者: Mango


Pyramid是使用Python构建的通用开放源Web应用程序开发框架。它允许Python开发人员轻松创建Web应用程序。

金字塔得到企业知识管理系统KARL(乔治·索罗斯项目)的支持。

安装,启动和配置

如前所述,“从小处开始,从大处完成,保持完成的框架”,Pyramid就像Flask一样,它几乎不需要花费任何精力来安装和运行。实际上,一旦开始构建此应用程序,您就会认识到某些模式类似于Flask。

以下是创建金字塔框架环境的步骤-

  • 首先,创建一个项目目录。在这里,我们创建了一个名为pyramidProject的目录(您可以选择任何名称)。

  • 接下来,创建一个虚拟环境,您将在其中安装所有项目特定的依赖项。在这里,我们创建了一个名为pyramidEnv的虚拟环境文件夹,其中安装了Pyramid。

  • 然后,转到目录pyramidEnv并使用pip install pyramid安装金字塔

完成上述所有操作后,您的目录结构将如下所示-

目录结构

并且系统中安装的金字塔版本如下-

金字塔版本

核心概念

金字塔框架基于以下核心概念-

  • Zope (可扩展性,遍历,声明式安全性)-金字塔在可扩展性,遍历概念和声明性安全性方面大致基于Zope。

  • 定向塔(URL调度,持久性的非优化视图,模板等)-金字塔得出其概念的另一个领域是定向塔项目。定向塔具有路由的概念,它在金字塔框架内调用URL调度,并且它们还具有持久层或模板的非优化视图。

  • Django (查看,文档级别)-金字塔也从Django获取提示。我们的观点,路由的URL和文档级别的方法非常像Django。

以下是Pyramid框架的功能-

  • 它是已知最快的Python Web框架。

  • 它支持大型和小型项目(当小型框架超出时为什么要重写)。

  • 它支持像microframeworks这样的单文件webapp。

  • 它具有内置的会话。

  • 它支持类似于Plone / Zope的事件。

  • 它提供了事务管理(如果已经注意到我们之前使用过Zope)。

组态

配置是影响应用程序操作的设置。有两种配置金字塔应用程序的方法:命令式配置和声明式配置。

金字塔配置支持-

  • 强制性配置,甚至覆盖基于装饰器的配置

  • 配置冲突检测(包括更多的本地确定与更少的本地确定)

  • 配置扩展性(包含在多个应用程序中)

  • 灵活的身份验证和授权策略

  • 配置的程序自省(查看生成导航的路由的当前状态)

URL生成

在金字塔中,我们可以为路线,资源和静态资产生成URL。使用URL生成API既简单又灵活。通过金字塔的各种API生成URL,用户可以任意更改配置,而不必担心断开与您的任何网页的链接。

简而言之,金字塔中的URL-

  • 支持URL生成,以允许更改不会中断链接的应用程序。

  • 生成指向驻留在应用程序内部或外部的静态资源的URL。

  • 支持路线和遍历。

观看次数

金字塔的主要工作之一是在请求到达您的应用程序时查找并调用可调用的视图。视图可调用项是一些代码,可响应您的应用程序中的请求而做一些有趣的事情。

当您将视图映射到URL分发或Python代码时,可以进行任何类型的调用。视图可以是函数声明或实例,可以在金字塔中用作视图。

有关视图的一些重要要点如下-

  • 视图是从任何可调用对象生成的。

  • 基于渲染器的视图可以简单地返回字典(不需要返回Webby样式对象)。

  • 支持每个路由多个视图(GET,POST,HTTP标头检查等)。

  • 视图响应适配器(要指定视图返回值与响应对象的处理方式时)。

可扩展性

金字塔的设计考虑了可扩展性。因此,如果金字塔开发人员在构建应用程序时牢记某些约束,则第三方应该能够更改应用程序的行为而无需修改其源代码。遵循某些约束的金字塔应用程序的行为可以被覆盖或扩展,而无需进行任何修改。它设计用于灵活部署到多个环境(无单例)。 Pyramid具有“ Tweens”中间件支持(WSGI中间件,但在Pyramid本身的上下文中运行)。

运行一个Hello,Pyramid程序

在安装金字塔框架之后,我们可以考虑的最简单的程序是检查是否一切正常,然后运行一个简单的“ Hello,World”或“ Hello,Pyramid”程序。

下面是我的金字塔“ Hello,Pyramid”程序在8000端口上的编号-

金字塔程序

以上简单的例子很容易运行。将其另存为app.py(在这里,我们给了名字pyramid_helloW.py)。

运行最简单的程序:

运行程序

接下来,在浏览器中打开http:// localhost:8000 / ,您将看到Hello,Pyramid!消息如下-

你好金字塔

以下是上述代码的解释-

行号1-3

在文件的开头,我们有导入语句。第一行导入make_server函数,该函数可以在将简单的Web服务器传递给应用程序时创建一个简单的Web服务器。第二和第三行从金字塔导入配置和响应函数。这些功能分别用于配置应用程序的详细信息和设置参数以及响应请求。

行号5-6

现在,我们有了一个名为hello_world的函数定义。实现生成响应的视图代码。满足视图要求的函数负责呈现将传递回请求实体的文本。在上述情况下,该函数在调用时使用了我们之前导入的Response函数。这将传递回应该提供给客户端的值。

行号8

如果__name__ ==’__main__’: Python在说,“从命令行运行时从此处开始”,而不是导入此模块时。

行号9-11

在行号如图9所示,我们在程序顶部导入的由configurator函数创建的对象中创建了一个名为config的变量。第10和11行调用此对象的add_route和add_view方法。此方法用于定义应用程序可以使用的视图。如我们所见,我们传递了前面定义的hello_world函数。该函数实际上是在此处合并为视图的。

行号12-14

在此,我们实际上是通过调用config对象的make_wsgi_app方法来创建WSGI应用程序的。这使用对象的属性(例如我们添加的视图)来创建应用程序。然后将此应用程序传递给我们导入的make_server函数,以创建一个可以启动Web服务器为我们的应用程序提供服务的对象。最后一行启动此服务器。

我们的hello world应用程序是最简单,最容易的金字塔应用程序之一,它是“强制性”配置的。这是当务之急,因为在执行配置任务时,我们可以使用Python的全部功能。

总而言之,Pyramid是一个开放源代码的Python Web框架,具有庞大而活跃的社区。这个庞大的社区为使Python网络框架变得流行和相关做出了贡献。金字塔Web框架通过提供一组强大的功能和工具来简化和加速Web应用程序的开发。