CherryPy :一個輕量級的 Python Web 框架

生物信息与育种發表於2024-10-06

CherryPy 是一個用於構建 Web 應用的微框架。它透過簡潔的 API 和強大的功能,使開發者能夠快速建立高效能的 Web 應用。在生物資訊開發中,資料庫搭建和模型部署等場景可能會用到,因此記錄下。

圖片

學習資源

  • 官方文件:https://docs.cherrypy.dev/en/latest/

  • GitHub專案:https://github.com/cherrypy/cherrypy

核心特點

  • 簡潔API:CherryPy的API設計簡潔直觀,讓Web應用開發變得簡單快捷。

  • 內建HTTP伺服器:自帶多執行緒伺服器,無需額外配置即可啟動。

  • 外掛豐富:提供多樣外掛,輕鬆實現認證、快取、會話管理等功能。

安裝

pip install cherrypy

應用示例

示例一:極簡的Hello World

import cherrypy

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

if __name__ == '__main__':
    cherrypy.quickstart(HelloWorld())

圖片

示例二:處理表單資料

import cherrypy

class FormHandler:
    @cherrypy.expose
    def index(self):
        return """
            <form method="post" action="submit">
                Name: <input type="text" name="name">
                <input type="submit">
            </form>
        """
    @cherrypy.expose
    def submit(self, name):
        return f"Hello, {name}!"

if __name__ == '__main__':
    cherrypy.quickstart(FormHandler())
    
# 使用者可以輸入姓名並點選 "Submit" 按鈕。當使用者提交表單時,CherryPy 將資料傳遞給 process 方法,然後可以使用使用者輸入的資料生成響應。

圖片

示例三:RESTful API

import cherrypy

class RestAPI:
    @cherrypy.expose
    def GET(self, *args, **kwargs):
        if not args:
            return "Welcome to the API!"
        return f"Resource requested: {args[0]}"

if __name__ == '__main__':
    cherrypy.quickstart(RestAPI())
  
# 當使用者訪問 /api 路徑時,它將返回根資源的資訊。當使用者訪問其他路徑時,它將顯示請求的資源名稱。

示例四:資料庫整合

import cherrypy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(String)

engine = create_engine('sqlite:///mydatabase.db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)

class DBExample:
    @cherrypy.expose
    def index(self):
        session = Session()
        session.add(User(username='testuser'))
        session.commit()
        return "New user added!"

if __name__ == '__main__':
    cherrypy.quickstart(DBExample())
    
# 建立了一個 User 類,它對應資料庫中的 users 表。使用 SQLAlchemy 建立了一個 SQLite 資料庫,並將 User 類對映到資料庫表。然後,在 index 方法中向資料庫新增了一個使用者。

總結

CherryPy 是一個極簡、穩定且功能強大的 Web 框架,它透過簡潔的 API 和清晰的結構,提供了一種簡單快速的方法來構建Web應用程式。使用 CherryPy,可以輕鬆地建立高效能的Web應用程式,處理請求和生成響應。

參考:

_https://mp.weixin.qq.com/s/gpd1s5AJD6loYxR6rH5MGA;_https://mp.weixin.qq.com/s/2gc3Z9_fQ9gyku0GcALfFg

圖片

相關文章