金字塔:从小到大的Python Web框架

2021-01-21 17:00:15

从wsgiref.simple_server导入,从pyramid.config导入make_server,从pyramid.config导入Configurator.response导入Responsedef hello_world(request):如果__name__ ==' __ main __'返回return((Hello World!')) Configurator()作为config:config.add_route(' hello&#39 ;,' /')config.add_view(hello_world,route_name =' hello')app = config。 make_wsgi_app()服务器= make_server(' 0.0.0.0',6543,应用程序)server.serve_forever()

金字塔使编写Web应用程序变得容易。您可以从这个“你好世界”开始。最少的请求/响应网络应用。这可能会让您走得更远,尤其是在学习时。随着您的应用程序的增长,Pyramid提供了许多功能,使编写复杂软件的工作量减少了。

金字塔可在所有受支持的Python版本中使用。我们的安装说明将帮助您启动和运行Pyramid。

Pyramid的快速教程将逐步指导您编写单个文件应用程序,表单,数据库集成和身份验证。

开发人员可以深入了解Pyramid的叙述性文档,或浏览广泛的API参考。金字塔有大量有用的资源可供借鉴。扩展金字塔是经过精心设计和可过滤的,可与金字塔一起使用的加载项,程序包和应用程序列表。

Megaframeworks为您做出决定。但是,如果您不符合他们的观点,那么您最终会与他们的决定抗争。微框架不会强制做出任何决定,因此很容易上手。但是随着您的应用程序的增长,您将独自一人。

在这两种情况下,重点都放在开始:太多或太少。无论哪种方式,完成和保持完成都很困难。您需要一个以架构设计为重点的整理框架,该框架应按比例缩小以适应入门,然后随着应用程序的增长而扩展。

金字塔就是为此而制成的。这是Goldilocks解决方案:不要太小,不要太大,恰到好处。

快速而简单地入门是轻量级框架的主要吸引力。同样,您可以选择在模板,数据库,安全性等方面使用哪种方法,或者在支架中使用方便的起点。金字塔擅长缩减学习的第一个小时,同时避免了框架魔术的陷阱。

使用Pyramid附加系统的质量和便捷性,从各种模板,数据库,安全解决方案中进行选择,并进行更多选择

利用各种高质量的文档进行评估,试用或使用Pyramid进行高级开发

雄心勃勃的项目渴望在不失去尊严的情况下发展壮大。金字塔具有独特的功能,可以随您扩展。它的配置,扩展和附加系统为支持您的雄心提供了框架,其体系结构可确保您不会失去一开始的性能和质量功能。

金字塔简单的第一个小时可以帮助您入门,而金字塔的可扩展性则可以帮助您完成雄心壮志。运送后还有生命。金字塔通过了解专业Web应用程序的整个生命周期来帮助您完成应用程序。

严格遵循Python惯例(WSGI,软件包,虚拟环境,首先支持Python 3)意味着您将不会脱离Python主流

全栈框架通过告诉您做什么来提供内置的价值。但是,做一些不同的事情,或者使用更好的方法,会导致与框架的争执。金字塔从很小的基础开始,提供了许多高质量的选择。

没有捆绑的模板系统,而​​是为Chameleon,Jinja2和Mako提供了三个非常高质量的附加组件

自1995年以来,Pyramid团队一直在开发雄心勃勃的Python Web框架。我们已经构建了小型系统和大型系统。由此,我们乐于帮助那些欣赏品质和梦想的人。

要演示这些功能,请安装Pyramid,单击以展开代码示例并将其复制到文件中,使用env / bin / python demo.py运行应用程序,并使用curl或浏览器请求http://0.0.0.0:6543 。

从wsgiref.simple_server导入,从pyramid.config导入make_server,从pyramid.config导入配置器,从pyramid.response导入,来自pyramid.view的响应,导入view_config @view_config(route_name =' home')def home(request):返回Response('欢迎! ')如果__name__ ==' __ main __&#39 ;:使用Configurator()作为配置:config.add_route(' home&#39 ;,' /')配置。 scan()app = config.make_wsgi_app()服务器= make_server(' 0.0.0.0&#39 ;, 6543,app)server.serve_forever()

金字塔是用Python编写的。 Pyramid开发人员可以使用Python语言了解和喜欢的所有功能,例如函数装饰器。在这里,我们显示了名为home的函数,该函数返回响应。该函数具有一个装饰器@view_config,该装饰器具有分配给它的路由,该路由也称为home。

从wsgiref.simple_server导入,从pyramid.config导入make_server,从pyramid.config导入配置器,从pyramid.response导入,来自pyramid.view的响应,导入view_config @view_config(route_name =' home&#39 ;, request_method =' POST')def home(请求):如果__name__ ==' __ main __'则返回Response(' Welcome!'):使用Configurator()作为config:config.add_route(' home&#39 ;,& #39; /')config.scan()app = config.make_wsgi_app()服务器= make_server(' 0.0.0.0&#39 ;, 6543,app)server.serve_forever()

一种测试,它返回True或False,并且缩小了可以调用视图或路由的一组环境。在这里,我们使用谓词将可调用视图的匹配限制为home的路由名称和POST HTTP请求方法。

从wsgiref.simple_server导入,从pyramid.make生成服务器,从pyramid.config,从pyramid.view导入Configurator,从view.config @view_config(route_name =' home&#39 ;, renderer =' json')def home(request):返回{& #34; a&#34 ;: 1," b&#34 ;: 2}如果__name__ ==' __ main __&#39 ;:使用Configurator()作为config:config.add_route(' home& #39 ;,' /')config.scan()app = config.make_wsgi_app()服务器= make_server(' 0.0.0.0&#39 ;, 6543,app)server.serve_forever( )

转换渲染器以后使用的无响应返回值。使用渲染器可以减少需要模板化或其他序列化(例如JSON)的视图的编写工作。

""" 1。运行`env / bin / pip install pyramid_jinja2`2。复制此模板并将其放在`templates / home.jinja2`中:<!DOCTYPE html>< html lang =" en">< head> < title> {{greet}},{{name}}< / title>< / head> body>< h1> {{greet}},{{name}}< / h1>< ; / body>< / html>"""从wsgiref.simple_server从pyramid.make导入make_server.config从pyramid.view导入Configurator.view import view_config @view_config(route_name =' home' ,renderer = templates / home.jinja2')def home(request):返回{" greet&#34 ;:' Welcome&#39 ;、" name" :' Akhenaten'},如果__name__ ==' __ main __&#39 ;:使用Configurator()作为配置:config.include(' pyramid_jinja2')config.add_route(&#39 ; home&#39 ;,' /')config.scan()app = config.make_wsgi_app()server = make_server(' 0.0.0.0&#39 ;, 6543,app)服务器。 serve_forever()

允许指定资产在包装中的位置。在这里,资产被指定为Jinja2模板home.jinja2,位于名为template的子目录中。在包myapp中,冒号从资产相对于包的位置来分隔包名称,例如renderer =&#39myapp:templates / home.jinja2'。

从wsgiref.simple_server导入,从pyramid.config导入make_server,从pyramid.Configureator导入,从pyramid.events导入NewRequest.events,从pyramid.imports导入NewResponse.events,从pyramid.response导入Subscriber,从pyramid.view导入Response,从view.config@view_config(route_name =' home' )def home(request):返回Response(' Welcome!')@subscriber(NewRequest,NewResponse)def mysubscriber(event):print(event)if __name__ ==' __ main __' :使用Configurator()作为配置:config.add_route(' home&#39 ;,' /')config.scan()app = config.make_wsgi_app()服务器= make_server(&#39 ; 0.0.0.0&#39 ;, 6543,app)server.serve_forever()

事件是在应用程序生命周期中的有趣时刻广播的对象。事件的订阅者允许您运行一些代码,例如调整上载图像的大小,发送电子邮件或向远程系统发送消息。在这里,修饰后的订户将被要求调用多个事件类型,尤其是对于每个新的请求和响应对象。