Pyramid 框架



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

Pyramid 背后是由企业知识管理系统 KARL(乔治·索罗斯的一个项目)支持。

安装、启动和配置

如所述,“从小开始,做大,保持完成”的框架,Pyramid 非常类似于 Flask,安装和运行起来非常简单。事实上,一旦你开始构建这个应用程序,你就会发现一些模式与 Flask 类似。

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

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

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

  • 然后,进入目录 pyramidEnv 并使用 pip install pyramid 安装 Pyramid。

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

Directory Structure

并且系统中安装的 Pyramid 版本如下所示:

Pyramid Version

核心概念

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

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

  • Pylons(URL 分发、对持久性的非强制性视图、模板等)——Pyramid 获取其概念的另一个领域是 Pylons 项目。Pylons 具有路由的概念,它调用 Pyramid 框架内的 URL 分发,并且它们还具有对持久性层或模板的非强制性视图。

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

以下是 Pyramid 框架的功能:

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

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

  • 它支持像微框架一样单文件 Web 应用程序。

  • 它具有内置的会话。

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

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

配置

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

Pyramid 配置支持:

  • 命令式配置,甚至覆盖基于装饰器的配置

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

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

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

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

URL 生成

在 Pyramid 中,我们可以为路由、资源和静态资产生成 URL。使用 URL 生成 API 很容易且灵活。通过 Pyramid 的各种 API 生成 URL,用户可以随意更改配置,而无需担心破坏任何网页的链接。

因此,简而言之,Pyramid 中的 URL:

  • 支持 URL 生成,以便允许对应用程序进行更改,而不会破坏链接。

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

  • 支持路由和遍历。

视图

Pyramid 的主要工作之一是在请求到达您的应用程序时查找并调用视图可调用对象。视图可调用对象是代码片段,它们会对您应用程序中发出的请求做出一些有趣的响应。

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

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

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

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

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

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

可扩展性

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

运行“Hello, Pyramid”程序

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

以下是我的 Pyramid“Hello, Pyramid”程序,端口号为 8000:

Pyramid Program

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

运行最简单的程序:

Running Program

接下来,在浏览器中打开 https://127.0.0.1:8000/,您将看到如下所示的“Hello, Pyramid!”消息:

Hello Pyramid

以下是上述代码的解释:

第 1-3 行

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

第 5-6 行

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

第 8 行

if __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 应用程序 是最简单和最可能的 Pyramid 应用程序之一,“命令式”配置。它是命令式的,因为当我们执行配置任务时,Python 的全部功能都可用。

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

广告