01:单文件Web应用程序¶
从Pyramid开始最简单的方法是什么?单个文件模块。没有python包,没有 pip install -e .
,没有其他机器。
背景¶
微框架风靡一时,直到下一个闪亮的东西出现。”“微框架”是一个营销术语,而不是技术术语。他们的精神负担很低:他们做的太少了,你唯一需要担心的是 你的东西 .
Pyramid是特殊的,因为它可以作为一个单一的文件模块微框架。您可以有一个单独的python文件,它可以直接由python执行。但Pyramid也提供了扩展到最大应用的设施。
python有一个标准名为 WSGI 这定义了python web应用程序如何插入标准服务器、获取传入请求和返回响应。大多数现代的PythonWeb框架都遵循“MVC”(模型-视图-控制器)应用程序模式,其中模型中的数据具有一个视图,用于调解与外部系统的交互。
在这一步中,我们将看到WSGi服务器、WSGi应用程序、请求、响应和视图的简要介绍。
目标¶
尽可能简单地获取正在运行的PyramidWeb应用程序。
把它作为一个很好理解的基础来添加每一个复杂性单元。
初次接触WSGi应用程序、请求、视图和响应。
步骤¶
确保已按照中的步骤操作 要求 .
从工作区目录开始 (
~/projects/quick_tutorial
)创建此步骤的目录:cd ~/projects/quick_tutorial; mkdir hello_world; cd hello_world
将以下内容复制到
hello_world/app.py
:1from waitress import serve 2from pyramid.config import Configurator 3from pyramid.response import Response 4 5 6def hello_world(request): 7 print('Incoming request') 8 return Response('<body><h1>Hello World!</h1></body>') 9 10 11if __name__ == '__main__': 12 with Configurator() as config: 13 config.add_route('hello', '/') 14 config.add_view(hello_world, route_name='hello') 15 app = config.make_wsgi_app() 16 serve(app, host='0.0.0.0', port=6543)
运行应用程序:
$VENV/bin/python app.py
在浏览器中打开http://localhost:6543/。
分析¶
不熟悉python web编程?如果是这样的话,模块中的一些行将进行价值解释:
Line 11 . 这个
if __name__ == '__main__':
python的说法是“从命令行运行时从这里开始”,而不是在导入这个模块时。Lines 12-14 . 使用Pyramid configurator 在一个 context manager 连接 view 特定URL的代码 route .
Lines 6-8 . 实现生成 response .
Lines 15-17 . 发表一篇文章 WSGI 使用HTTP服务器的应用程序。
如本例所示, configurator 在Pyramid发展中起着核心作用。从松散耦合的部分通过 应用程序配置 是Pyramid中的一个中心思想,我们将定期在此重访 快速教程 .
额外credit¶
为什么要这样做:
print('Incoming request')
……代替:
print 'Incoming request'
如果返回一个HTML字符串会发生什么情况?整数序列?
放一些无效的东西,例如
print xyz
,在View函数中。杀了你python app.py
具有ctrl-C
然后重新启动,然后重新加载浏览器。在控制台中看到异常?这个
GI
在里面WSGI
代表“网关接口”。这是在什么样的网络标准之后建模的?