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 示例介紹了其一些關鍵特性。