Bottle Web 框架入門 - Python


Python 在廣泛的 Web 開發領域中已經 зарекомендовала себя как гибкий язык。它豐富的框架選擇使得建立可靠的 Web 應用程式變得更加容易。Bottle 是一個專門為建立 Web API 而設計的微型 Web 框架,是其中一個這樣的框架。本文將介紹 Bottle Web 框架,並提供一些有用的 Python 示例。

瞭解 Bottle:一個微型 Web 框架

Bottle 是一個 Python Web 框架,它快速、輕量級且易於使用。它非常適合建立簡單的個人應用程式、進行實驗以及學習 Web 應用程式開發的基礎知識。Bottle 在 WSGI 標準之上提供了對路由、模板、實用程式和基本抽象的支援。

設定 Bottle

在繼續學習示例之前,必須安裝 Bottle。執行以下 pip 命令即可完成安裝。

pip install bottle

深入實踐示例

為了進一步理解 Bottle 的特性,讓我們來看一些實際應用場景。

示例 1:建立基本應用程式

讓我們從構建一個簡單的 Bottle 應用程式開始。此應用程式的唯一路由將響應根 URL (“/”) 上的 HTTP GET 請求。

from bottle import Bottle, run

app = Bottle()

@app.route('/')
def home():
   return "Welcome to my Bottle application!"

run(app, host='localhost', port=8080)

只需儲存指令碼並啟動 Python 即可執行此應用程式。您可以透過開啟 Web 瀏覽器並訪問 https://:8080 來檢視歡迎訊息。

示例 2:新增更多路由和 HTTP 方法

可以輕鬆新增更多路由,Bottle 使響應各種 HTTP 方法變得簡單。以下示例說明了這一點

from bottle import Bottle, run, request

app = Bottle()

@app.route('/')
def home():
   return "Welcome to my Bottle application!"

@app.route('/hello/<name>', method='GET')
def hello(name):
   return f"Hello, {name}!"

@app.route('/login', method='POST')
def login():
   username = request.forms.get('username')
   password = request.forms.get('password')
   return f"Hello, {username}, your password is {password}."

run(app, host='localhost', port=8080)

在本例中,引入了兩個額外的路由。動態路由 /hello/name> 將 URL 的一部分作為引數捕獲。/login 路由響應 HTTP POST 請求,並從請求正文中讀取資訊。

示例 3:使用模板

您可以使用 Bottle 內建的模板支援來建立動態 HTML 響應。這是一個示例

from bottle import Bottle, run, template

app = Bottle()

@app.route('/')
def home():
   return "Welcome to my Bottle application!"

@app.route('/hello/<name>', method='GET')
def hello(name):
   return template("<h1>Hello, {{name}}!</h1>", name=name)

run(app, host='localhost', port=8080)

在本例中,我們使用模板函式為 /hello/name> 路由構建 HTML 響應。此函式透過用相應的引數值替換佔位符字元(如“name”)來從模板字串和一組關鍵字引數建立字串。

示例 4:提供靜態檔案

使用 Bottle 可以輕鬆地提供靜態檔案,例如影像、CSS 檔案或 JavaScript 檔案。以下示例演示瞭如何實現這一點

from bottle import Bottle, run, static_file

app = Bottle()

@app.route('/')
def home():
   return "Welcome to my Bottle application!"

@app.route('/static/<filename>')
def serve_static_file(filename):
   return static_file(filename, root='/path/to/your/static/files')

run(app, host='localhost', port=8080)

本例中的 /static/filename> 路由從指定的目錄提供靜態檔案。應將包含靜態檔案的目錄的路徑替換為 /path/to/your/static/files。

示例 5:處理錯誤

對於各種 HTTP 狀態程式碼,可以在 Bottle 中定義自定義錯誤頁面。定義個性化的 404 錯誤頁面的方法如下所示 −

from bottle import Bottle, run, abort

app = Bottle()

@app.route('/')
def home():
   return "Welcome to my Bottle application!"

@app.route('/fail')
def fail():
   abort(404, "Page not found")

@app.error(404)
def error404(error):
   return "The page you are looking for does not exist."

run(app, host='localhost', port=8080)

在本例中,訪問 https://:8080/fail 將導致 404 錯誤並顯示自定義錯誤頁面。

示例 6:將 Bottle 與資料庫一起使用

Bottle 輕鬆實現資料庫整合。在下面的示例中,您可以看到一個使用 SQLite 的簡單 Bottle 應用程式

from bottle import Bottle, run, template, request
import sqlite3

app = Bottle()

@app.route('/')
def home():
   conn = sqlite3.connect('test.db')
   c = conn.cursor()
   c.execute("SELECT name FROM users")
   users = c.fetchall()
   return template("Home page. Users: {{users}}", users=users)

@app.route('/add_user', method='POST')
def add_user():
   conn = sqlite3.connect('test.db')
   c = conn.cursor()
   name = request.forms.get('name')
   c.execute("INSERT INTO users (name) VALUES (?)", (name,))
   conn.commit()
   return "User added."

run(app, host='localhost', port=8080)

在本例中,首頁顯示了 SQLite 資料庫“test.db”中“users”表中的使用者列表。/add_user 路由將新使用者新增到資料庫中。

這些示例展示了 Bottle 框架的靈活性和多功能性。Bottle 是一個有用的 Python Web 開發工具包,佔用空間小,介面直觀。無論您是建立簡單的 Web 應用程式還是複雜的 RESTful API,Bottle 都是您 Python Web 框架的絕佳選擇。

結論

Bottle 是一個簡單有效的 Python 工具,用於建立 Web 應用程式。它易於使用且輕量級,使其成為初學者和需要快速執行和少量開銷的程式的絕佳選擇。

本文介紹了 Bottle Web 框架,並使用有用的 Python 示例介紹了其一些關鍵特性。

更新於: 2023年7月17日

235 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告