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 次

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告