使用金字塔框架介绍Python Web开发(第2部分)
如果你还没读过本系列的第1部分,我建议您在继续本文之前这样做。在第1部分中,我们介绍了Python框架的安装,以及如何创建您的第一个框架脚手架应用程序。
本文从配置的角度深入探讨了Pyramid框架的工作原理。我将概述通过将web服务器连接到应用程序服务器实例来初始化应用程序的过程,以及如何添加应用程序的观点.框架运行的web服务器被调用女服务员.它是一个用于托管web应用程序的生产质量服务器。
在开始之前,我们将首先检查Pyramid使用的应用程序配置类型。金字塔文档涵盖了其中的一些信息;然而,本文的目的不仅是进一步澄清这些概念,而且是解决一些缺失的分析。通常,文档会在覆盖范围中留下空白,并且不简洁或不容易理解。如果您继续阅读并将这些文章作为参考,那么您将走上使用Python Pyramid开发web应用程序的快车道。
应用程序配置
Python有两种类型的应用程序配置:命令式配置(IC)和声明式配置(DC)。与大多数其他语言一样,您可以通过编程方式或使用配置文件配置应用程序设置。IC和DC都是作为应用程序代码库的一部分以编程方式完成的。我不太喜欢这种方法,因为它没有松散地耦合应用程序代码中的配置设置。但是,这种方法通常用于在配置文件中创建静态设置。IC指的是通过使用简单的Python语句配置应用程序的过程配置器对象,如下例所示:
从wsgiref。Simple_server从金字塔导入make_server从金字塔中导入配置器。响应import Response def hello_world(request): return Response('Hello world!') if __name__ == '__main__': config = Configurator() config.add_view(hello_world) app = config.make_wsgi_app() server = make_server('0.0.0.0', 8080, app) server.serve_forever()
这里需要注意的重要一点是配置器对象,它用于配置应用程序注册中心。该注册中心是应用程序配置信息的存储库。一个应用程序只能有一个注册中心。的add_view方法配置器对象映射a请求对象转换为可调用对象响应对象,使用hello_world方法。这些对象类似于HTTP请求和响应对象在Java或。net中。
的make_wsgi_app ()方法返回该应用程序的Web服务器网关接口(WSGI)应用程序实例。实例作为将web服务器连接到应用程序的结果返回。但是,如果没有make_server对象。此对象创建可在其上运行应用程序的应用服务器实例。的应用程序对象将应用服务器连接到web服务器,就像Java servlet为Java所做的那样。web服务器将使用的端口8080也传递给该方法。的serve_forever ()方法将继续处理请求,直到使用Ctrl-C停止服务器。
第二种类型的配置,声明式配置,使用元数据调用来设置视图指令,如下面的例子所示:
从金字塔。响应import Response from pyramid.view import view_config @view_config(name='hello', request_method='GET') def hello(request): return Response('Hello')
在本例中,DC使用view_config装饰器,它允许我们添加@view_config属性来表示你好函数。这种情况下的属性类似于。net属性和Java注释。它们本质上服务于相同的目的,即标记应用程序中的方法,这些方法稍后会在使用该属性的地方注入代码。然而,使用属性的Python版本是不完整的,直到配置对象的扫描方法。下面是一个更完整的示例扫描:
从wsgiref。Simple_server从金字塔导入make_server从金字塔中导入配置器。从金字塔中导入响应。view import view_config @view_config() def hello(request): return Response(' hello ') if __name__ == '__main__': from pyramid。config.scan() app = config.make_wsgi_app() server = make_server('0.0.0.0', 8080, app) server.serve_forever()
使用配置装饰和扫描一起被称为声明式配置。的扫描方法扫描属性并将其注册到应用程序注册中心。DC最终成为IC的简写。在这些示例中,DC版本不必调用add_view方法,与IC版本一样。扫描后,通过属性隐式调用它。集成电路和直流电路实现等效的功能查看配置.简单来说,视图配置就是将请求映射到视图的过程。在应用程序设计的模型-视图-控制器(Model-View-Controller, MVC)世界中,您可以将其视为视图.
结论
在本文中,您学习了使用声明式和命令式视图配置方法配置Python金字塔web应用程序的基础知识。这两种方法本质上是相同的,但是DC方法使用属性来代替视图配置方法调用。两种方法都不比另一种好;你喜欢哪个就用哪个。你还应该意识到,使用这些程序化的方法来配置你的应用程序会取代静态配置文件,比如development.ini和production.ini.在本系列的第3部分,我将详细介绍金字塔应用程序的启动生命周期,并剖析. ini文件。
在这个阶段,您应该能够很轻松地设置金字塔web应用程序。但是本文只是作为配置金字塔应用程序的一个简单起点。你也应该自己做一些研究和探索。当你这样做时,你会发现Python金字塔是一个强大的web应用程序开发平台。