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

适用于 CGI 程序员的 CherryPy

 2008-09-30 13:11:14 来源:WEB开发网   
核心提示: 清单 2. CherryPy 调用 hello 对象的 index() 方法#!/usr/bin/env pythonfrom cherrypy import cpgclass HelloWorld:@cpg.exposedef index(self):return "Hello

清单 2. CherryPy 调用 hello 对象的 index() 方法

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

当您访问 /hello/ URL 时,您的请求被映射到对象 cpg.root.hello,并且其默认的方法(index())被调用来处理该请求。

暴露对象和方法

方法 hello 和 index 上的 装饰符 @cpg.expose 有什么用呢?它告诉 CherryPy,调用该方法来响应 Web 请求没有问题。

在提供静态文件的 Web 网站,假定 Web 空间中的每个文件和目录都计划用于公共消耗。但是也有几处例外,例如,Apache 就不会提供隐藏的文件,如 UNIX® 系统上的 .htaccess。

当您将一个对象树暴露为一个 CherryPy URL 空间时,假设是另一种情形:除非您显性地将方法标记为暴露,否则它不会为外面的用户提供服务。考虑一下许多编程语言中公有和私有类成员之间的区别,(并且通过 Python 中的 _method() 约定非正式地实施)。一个设计良好的 CherryPy 类可能只有少数几个公有的方法暴露给 Web 客户机,但是它很可能有许多不允许客户机直接访问的内部方法。

我认为装饰符是将方法暴露给 CherryPy 的最佳方式,但是也可以通过将其成员 exposed 设置为 True 来暴露一个方法:

清单 3. 通过将其成员 exposed 设置为 True 来暴露一个方法

class HelloWorld:
  def index(self):
    return "Hello, world!"
  index.exposed = True

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

Tags:适用 CGI 程序员

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