CherryPy 简介


随着互联网的发展,开发 Web 应用程序变得至关重要。Python 凭借其简单性和可靠性,已成为 Web 开发的热门选择。CherryPy 是其框架之一,使这种方法变得简单。本文通过实际示例介绍了 CherryPy、其功能以及如何使用它们来创建 Web 应用程序。

什么是 CherryPy?

Python 的 CherryPy 是一个简单、面向对象的 Web 框架。它遵循“一切皆为对象”的原则,对于习惯了 Python 面向对象结构的开发人员来说,它是自然的选择。它允许程序员以类似于面向对象 Python 程序的方式创建 Web 应用程序,从而产生更小、更易读的代码。

CherryPy 入门

使用 pip(Python 的包安装程序)安装 CherryPy 很简单。如果您还没有安装它,请运行以下命令来安装它

pip install cherrypy

安装完成后,使用以下语法将其导入到您的 Python 脚本中

import cherrypy

使用 CherryPy 构建简单的 Web 应用程序

CherryPy 的优雅之处在于它的简单性。让我们以一个简单的 Web 应用程序为例。

示例 1:Hello World!

import cherrypy

class HelloWorld(object):
   @cherrypy.expose
   def index(self):
      return "Hello World!"

cherrypy.quickstart(HelloWorld())

此程序创建了一个简单的 Web 服务器,它使用“Hello World!”响应请求。@cherrypy.expose 装饰器使 index 方法可供 Web 使用,使其可以通过 URL 访问。cherrypy.quickstart() 启动 Web 服务器。

示例 2:使用 HTTP 动词

此外,CherryPy 使使用 HTTP 动词(如 GET 和 POST)变得简单。这是一个示例

import cherrypy

class HelloWorld(object):
   @cherrypy.expose
   def index(self):
      if cherrypy.request.method == "GET":
         return "This was a GET request."
      elif cherrypy.request.method == "POST":
         return "This was a POST request."

cherrypy.quickstart(HelloWorld())

在此示例中,index 方法通过检查 HTTP 方法来确定传入请求是 GET 请求还是 POST 请求,并相应地返回不同的字符串。

示例 3:URL 参数和路由处理

使用 CherryPy,处理 URL 参数和各种路由也很简单

import cherrypy

class HelloWorld(object):
   @cherrypy.expose
   def index(self, name="World"):
      return f"Hello {name}!"

   @cherrypy.expose
   def greet(self, name="Stranger"):
      return f"Nice to meet you, {name}."

cherrypy.quickstart(HelloWorld())

在此示例中,响应使用 index 方法支持的 URL 参数 name 进行定制。如果没有指定 name 参数,则默认值为“World”。greet 方法接收 name 参数并指示一个单独的路由 (/greet)。

示例 4:提供静态文件

CherryPy 还可以提供静态文件,如脚本、样式表和图像。您将如何设置它?

import cherrypy

class HelloWorld(object):
   @cherrypy.expose
   def index(self):
      return open('index.html')

if __name__ == '__main__':
   conf = {
      '/': {
         'tools.staticdir.root': '/path/to/your/static/files',
      },
      '/static': {
         'tools.staticdir.on': True,
         'tools.staticdir.dir': 'public',
      }
   }
cherrypy.quickstart(HelloWorld(), '/', conf)

在此示例中,HTML 文件通过 index 方法提供。配置 conf 在 URL /static 处创建了一个静态目录,该目录提供来自 public 目录的文件。

示例 5:实现 Cookie

CherryPy 还提供简单的 Cookie 处理 -

import cherrypy

class HelloWorld(object):
   @cherrypy.expose
   def index(self):
      if cherrypy.request.cookie.get('name'):
         name = cherrypy.request.cookie['name'].value
         return f"Hello again, {name}!"
      else:
         cherrypy.response.cookie['name'] = 'Friend'
         cherrypy.response.cookie['name']['path'] = '/'
         cherrypy.response.cookie['name']['max-age'] = 3600
         return "Hello Stranger. I will remember you."
cherrypy.quickstart(HelloWorld())

此示例中的 index 方法确定名为“name”的 Cookie 是否已存在。如果存在,则按姓名问候访客;如果不存在,则将访客称为陌生人并设置 Cookie。

结论

CherryPy 是一个简单而有效的 Python Web 框架,能够处理各种 Web 开发任务。它通过使用 Python 的面向对象方法,使 Web 编程变得直观且简单。除了这些示例中说明的路由、请求处理和响应构建之外,它还能够执行更复杂的任务,例如提供静态文件、控制 Cookie、管理会话等等。

在这篇文章中,我们介绍了 CherryPy 并通过五个示例检查了其核心功能:创建简单的 Web 应用程序、处理各种 HTTP 方法、路由和 URL 参数、提供静态文件以及管理 Cookie。

更新于: 2023-07-17

浏览量 180 次

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告