WEB开发网
开发学院软件开发Python 适用于 CGI 程序员的 CherryPy 阅读

适用于 CGI 程序员的 CherryPy

 2008-09-30 13:11:14 来源:WEB开发网   
核心提示: 考虑一下对于 URL http://localhost:8080/hello/ 的请求,在传统的 Web 服务器中,适用于 CGI 程序员的 CherryPy(2),这种 URL 相应于 Web 空间根部下面的 hello/ 目录,当您使用 Web 浏览器访问它时,而不是方法,那么当用户访

考虑一下对于 URL http://localhost:8080/hello/ 的请求。在传统的 Web 服务器中,这种 URL 相应于 Web 空间根部下面的 hello/ 目录。当您使用 Web 浏览器访问它时,Web 服务器读取 hello/ 目录中的 index.html 文件或者调用该目录中的 index.cgi 脚本作为一个 CGI,并且向您发送输出。

CherryPy Web 服务器不提供根植于磁盘目录中的 Web 空间,而提供根植于特定的 Python 对象 cpg.root 中的 Web 空间。若要访问那个对象的每个方法和成员,只需将它的名称附加到根 URL 上即可。所以,hello/ URL 在 CherryPy 中相应于 cpg.root 的成员 hello。

通过定义一个方法为请求提供服务

如果 cpg.root.hello 是一个方法,则 CherryPy 调用该方法,方法的输出被发送到 Web 浏览器。下面的代码定义一个暴露 hello 方法的对象:

清单 1. 定义一个暴露 hello 方法的对象

#!/usr/bin/env python
from cherrypy import cpg
class Application:
  @cpg.expose
  def hello(self):
    return "Hello, world!"
  
cpg.root = Application()
cpg.server.start()

通过 Python 运行这段脚本,CherryPy Web 服务器将会启动。只要该脚本一直在运行,您就可以访问 http://localhost:8080/hello/,并且可以看到字符串 Hello, world!。(当然,这还得假定您没有在端口 8080 上运行一台服务器。)如果您访问其他 URL,包括 Web 服务器根,将会得到一个 CherryPy 错误,因为 /hello/ 是该应用程序知道如何提供服务的惟一 URL。

通过定义对象树为请求提供服务

如果 cpg.root.hello 是一个对象,而不是方法,那么当用户访问 /hello/ 时,CherryPy 会调用 hello 对象的 index() 方法。这些代码以与先前示例相同的方式提供 /hello/ URL 服务:

上一页  1 2 3 4 5 6 7  下一页

Tags:适用 CGI 程序员

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接