Python Web Development Libraries 简明教程
Pyramid Framework
Pyramid 是一个通用、开源的 web 应用程序开发框架,用 python 构建。它允许 python 开发人员轻松创建 web 应用程序。
Installing, starting up and configuring
正如所描述的,“从小开始,大功告成,坚持到底的框架”,Pyramid 非常像 Flask,安装和运行时只需要很少的工作。事实上,一旦你开始构建这个应用程序,你就会发现其中的一些模式类似于 Flask。
以下是创建 Pyramid 框架环境的步骤:
-
首先,创建一个项目目录。在此处,我们创建了一个名为 pyramidProject 的目录(你可以选择你想要的任何名称)。
-
接下来,创建一个虚拟环境,你将在其中安装所有特定于项目的依赖关系。在此处,我们创建了一个名为 pyramidEnv 的虚拟环境文件夹,其中安装了 Pyramid。
-
然后,转到目录 pyramidEnv 并通过 pip install pyramid 安装 Pyramid。
完成上述所有操作后,你的目录结构如下所示:
系统中安装的 Pyramid 版本如下所示:
Core Concepts
Pyramid 框架基于以下核心概念:
-
Zope (可扩展性、遍历、声明性安全性)——Pyramid 在可扩展性、遍历概念和声明性安全方面以 Zope 为基础。
-
Pylons (URL 调度、非观点持久性、模板化等)——Pyramid 从中汲取概念的另一个领域是 Pylons 项目。Pylons 有路由的概念,它在 Pyramid 框架中调用 URL 调度,并且它们还具有持久性层或模板化的非观点视图。
-
Django (视图,文档级别)——Pyramid 还从 Django 中获得提示。我们采取视图的方式、路由 URL 的方式以及文档级别都非常类似于 Django。
以下是 Pyramid 框架的功能:
-
它是已知的最快的 Python Web 框架。
-
它支持小项目和大项目(当你的小框架不够用时,何必重新编写)。
-
它支持类似于微框架的单文件 Web 应用程序。
-
It has built-in sessions.
-
它支持类似于 Plone/Zope 的事件。
-
它提供事务管理(如果你已经注意到,我们之前已经使用过 Zope)。
Configuration
配置是影响应用程序操作的设置。配置 Pyramid 应用程序有两种方法:命令式配置和声明式配置。
Pyramid 配置支持:
-
命令式配置或甚至对基于装饰器的配置的覆盖
-
配置冲突侦测(包括更本地对更不本地确定)
-
配置的可扩展性(从多应用中包含)
-
灵活的身份验证和授权规则
-
程序化配置内省(查看用于生成导航的路径的当前状态)
URL generation
在金字塔中,我们可以为路径、资源和静态资源生成 URL。使用 URL 生成 API 既容易又灵活。通过金字塔的多个 API 生成 URL,用户可以任意更改配置,而不必担心破坏任何网页的链接。
简而言之,金字塔中的 URL −
-
支持 URL 生成,以允许对应用程序进行更改,这些更改不会破坏链接。
-
生成 URL,指向处于应用程序内部或外部的静态资源。
-
supports Routes and Traversal.
Views
金字塔的主要任务之一是在请求到达应用程序时查找并调用视图可调用对象。视图可调用对象是在对应用程序中的请求做出响应时执行一些有趣操作的代码片段。
在将视图映射到 URL 调度或 Python 代码时,可以进行任何类型的调用。视图可以是函数声明或实例,可以在金字塔中用作视图。
下面给出视图的一些重要要点:
-
视图从任何可调用对象生成。
-
基于渲染器的视图可以简单返回字典(不必返回 webby 样式对象)。
-
支持每条路径的多个视图(GET 与 POST 与 HTTP 头部检查等)。
-
视图响应适配器(当你想指定视图如何返回的值处理方式与响应对象不同时)。
Extensibility
金字塔的设计考虑了可扩展性。因此,如果金字塔开发人员在构建应用程序时牢记某些约束,第三方应该能够在无需修改源代码的情况下更改应用程序的行为。遵守某些约束的金字塔应用程序的行为可以在不进行任何修改的情况下进行覆盖或扩展。它设计用于针对多个环境的灵活部署(无单例)。金字塔具有“Tweens”中间件支持(WSGI 中间件,但在金字塔本身的上下文中运行)。
Running a Hello, Pyramid Program
在安装金字塔框架以检查一切都运行良好之后,我们可以想到的最简单的程序是运行一个简单的“Hello, World”或“Hello, Pyramid”程序。
下面是我在端口号 8000 上运行的金字塔“Hello, Pyramid”程序:
上面的示例很容易运行。将此保存为 app.py(在此,我们给出了名称 pyramid_helloW.py)。
运行最简单的程序:-
接下来,在浏览器中打开 http://localhost:8000/ ,您将看到 Hello, Pyramid! 消息如下所示 −
以下是上述代码的说明 −
Line no. 1-3
在文件开头,我们有 import 语句。第一行导入 make_server 函数,该函数可以创建一个简单的 Web 服务器,当它传递给应用程序时。第二行和第三行从 pyramid 导入配置和响应函数。这些函数分别用于配置详细信息、设置应用程序的参数以及响应请求。
Line no. 5-6
现在,我们有一个名为 hello_world 的函数定义。实现生成响应的视图代码。满足视图要求的函数负责呈现将传递回请求实体的文本。在上述情况下,该函数在调用时使用我们之前导入的响应函数。这会回传一个应该提供给客户端的值。
Line no. 9-11
在第 9 行中,我们创建一个名为 config 的变量,该变量来自我们在程序顶部导入的配置器函数创建的对象。第 10 行和第 11 行调用此对象的 add_route 和 add_view 方法。此方法用于定义应用程序可以使用的视图。正如我们所看到的,我们传递了我们之前定义的 hello_world 函数。这是该函数实际上作为视图被合并的地方。
Line no. 12-14
在此,我们实际上通过调用配置对象的 make_wsgi_app 方法来创建 WSGI 应用程序。这使用对象的属性(例如,我们添加的视图)来创建一个应用程序。然后将此应用程序传递给我们在导入时导入的 make_server 函数,以创建一个可以启动 Web 服务器来为我们的应用程序提供服务的对象。最后一行启动此服务器。
我们的 hello world application 是最简单、最容易使用的金字塔应用程序之一,配置为“命令式”。它是必要的,因为我们在执行配置任务时可以使用 Python 的全部功能。
总之,Pyramid 是一个拥有庞大且活跃社区的开源 Python Web 框架。这个大型社区为使 Python Web 框架流行且相关做出了贡献。Pyramid Web 框架通过提供一组健壮的功能和工具简化并加速了 Web 应用程序的开发。