Pyramid 框架

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

Pyramid 由企业知识管理系统 KARL(George Soros 项目)提供支持。


安装、启动和配置

正如所描述的,"从小处着手,完成大处,保持完整的框架",Pyramid 很像 Flask,安装和运行起来非常简单。 事实上,一旦您开始构建此应用程序,您就会发现其中一些模式与 Flask 相似。

以下是创建 Pyramid 框架环境的步骤 −

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

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

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

按照上述步骤完成所有操作后,您的目录结构将如下所示 −

目录结构

下面给出系统安装的 Pyramid 版本 −

Pyramid 版本

核心概念

Pyramid 框架基于以下核心概念 −

  • Zope(可扩展性、遍历性、声明性安全)− Pyramid 在可扩展性、遍历概念和声明性安全方面松散地基于 Zope。

  • Pylons(URL 调度、非固执的持久性视图、模板等)− Pyramid 从中汲取概念的另一个领域是塔项目。 Pylons 有路由的概念,在 Pyramid 框架内调用 URL 调度,它们也有持久层或模板的非固执己见的观点。

  • Django(视图,文档级别)− Pyramid 也从 Django 得到提示。 我们获取视图、路由 URL 和文档级别的方式非常符合 Django 方式。

Pyramid 框架的特点如下 −

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

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

  • 它支持像 microframeworks 这样的单文件网络应用程序。

  • 它有内置会话。

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

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


配置

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

Pyramid 配置支持 −

  • 命令式配置甚至重写基于装饰器的配置

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

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

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

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


URL 生成

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

简而言之,pyramid 中的 URL −

  • 支持 URL 生成以允许在不破坏链接的情况下更改应用。

  • 生成位于应用程序内部或外部的静态资源的 URL。

  • 支持路由和遍历。


视图

pyramid 的主要工作之一是在请求到达您的应用程序时查找并调用可调用的视图。 View callables 是一些代码,可以响应您的应用程序中发出的请求来做一些有趣的事情。

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

下面给出了关于视图的一些要点 −

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

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

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

  • 视图响应适配器(当您想要指定应如何处理视图返回值与响应对象时)。


可扩展性

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


运行一个 Hello, Pyramid 程序

在安装 Pyramid 框架后,我们可以想到的最简单的程序来检查是否一切正常,就是运行一个简单的"Hello, World"或"Hello, Pyramid"程序。

下面是我在 8000 端口号上的 Pyramid "Hello, Pyramid" 程序 −

Pyramid 程序

上面的简单例子很容易运行。 将其保存为 app.py(在此,我们命名为 pyramid_helloW.py)。

运行最简单的程序: −

运行程序

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

Hello Pyramid

下面是对上面代码的解释 −

行号 1-3

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

行号 5-6

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

行号 8

if __name__ == '__main__':Python 说,"Start here when running from the command line(从命令行运行时从这里开始)",而不是在导入此模块时。

行号 9-11

在第 9 行,我们从我们在程序顶部导入的配置器函数创建的对象中创建一个名为 config 的变量。第 10 和 11 行调用了该对象的 add_route 和 add_view 方法。 此方法用于定义应用程序可以使用的视图。 如我们所见,我们传递了之前定义的 hello_world 函数。 这是该功能实际合并为视图的地方。

行号 12-14

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

我们的 hello world 应用程序 是最简单的 Pyramid 应用程序之一,"imperatively(命令式)"配置。 这是必要的,因为在我们执行配置任务时,Python 的全部功能对我们可用。

总而言之,Pyramid 是一个开源的 Python Web 框架,拥有庞大而活跃的社区。 这个庞大的社区有助于使 python 网络框架流行和相关。 Pyramid Web 框架通过提供一组强大的功能和工具来简化和加速 Web 应用程序的开发。