Django项目开发实战
上QQ阅读APP看书,第一时间看更新

1.2 Python Web编程

Web 2.0专注于让网站上的用户生成内容,从它诞生以来,网络编程就成为了热门话题。动态网站不是基于文件系统中的文件,而是由程序生成内容返回给用户。这些程序可以做各种有用的事情,如显示公告板的发布。这些程序可以用服务器支持的任何编程语言编写。因为大多数服务器支持Python(一种解释型编程语言),因此可以使用Python轻松地创建动态网站。

大多数HTTP服务器软件是使用C(一种通用的编程语言)或者C++(一种通用的程序设计语言)编写的,它们不能直接执行Python代码,因此服务器程序和应用程序之间需要一些“桥梁”。这些“桥梁”(或者叫作接口)定义了程序如何与服务器进行交互。

1.2.1 通用网关接口

通用网关接口(Common Gateway Interface,CGI)是一种定义程序和服务器交互方式的标准协议。生成动态网页的应用程序一般称为CGI脚本。通常情况下,CGI脚本发出执行请求并生成HTML文本。

简单地说,来自客户端的HTTP POST请求将表单数据通过标准输入发送到CGI脚本。脚本通过环境变量获取其他数据(如URL路径和HTTP标头数据)。

对于Python程序来说,每个请求都会启动一个新的Python解释器,这会消耗一些时间,因此使用Python编写CGI脚本只能用于低负载的情况。

CGI的优势在于它很简单,编写一个使用CGI的Python程序的代码如下面的脚本:

1.2.2 WSGI协议

Web服务网关接口(Python Web Server Gateway Interface,WSGI)是一种为Python语言定义的Web服务器和Web应用程序或框架之间的简单而通用的接口,目前是Python Web编程的最佳方式,一般用来编写框架。

WSGI的最大优点是统一了应用程序编程接口。如果使用的框架支持WSGI,那么应用程序就能在所有支持WSGI的Web服务器上进行部署。

WSGI一个非常好的特性是中间件。中间件是应用程序的一层,用户可以在其中添加各种功能。目前,很多中间件已经被开发出来了。例如,开发者不用再编写自己的会话管理代码,而只需要下载会话管理中间件,将其插入应用,就能进行应用相关的特定逻辑的编码了。

用于连接到各种底层网关的代码称为WSGI服务器。现在已经有很多WSGI服务器了,所以Python Web应用几乎可以在任何地方部署。这是Python与其他网络技术相比的一大优势。

1.2.3 模板引擎

模板引擎用于将模板与数据模型组合起来以生成结果文档。在最简单的情况下,模板只是带有占位符的HTML文件,如下面的代码:

使用模板引擎有助于将HTML代码分解为各个部分,这样既降低了代码之间的耦合,又有利于代码的复用。为了基于复杂的模型数据生成复杂的HTML文本,通常需要for和if这样的控制语句。

Python有很多可用的模板引擎,其中一些模板引擎定义了一种易于学习的纯文本编程语言。流行的模板引擎包括Jinja2(一种使用Python语言编写的模板引擎)等。