Bottle Web 框架简介 - Python

pythonserver side programmingprogramming

Python 是 Web 开发领域中一种灵活的语言。它拥有多种框架,可以更轻松地创建可靠的 Web 应用程序。Bottle 就是这样一个框架,它是一种专为创建 Web API 而打造的微型 Web 框架。本文将介绍 Bottle Web 框架以及几个有用的 Python 示例。

了解 Bottle:一个微型 Web 框架

Bottle 是一个快速、轻便且易于使用的 Python Web 框架。它是创建简单的个人应用程序、进行实验和学习开发在线应用程序基础知识的理想选择。通过 WSGI 标准,Bottle 提供对路由、模板、实用程序和基本抽象的支持。

设置 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 浏览器并转到 http://localhost: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 的一部分作为参数。响应 HTTP POST 请求,/login 路由从请求主体中读取信息。

示例 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)

在这种情况下,访问 http://localhost: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 开发的有用工具包,具有紧凑的占用空间和直观的用户界面。无论您是创建简单的在线应用程序还是复杂的 RESTful API,Bottle 都是您的 Python Web 框架的绝佳选择。

结论

Bottle 是一个用于创建 Web 应用程序的简单有效的 Python 工具。它的易用性和轻量级结构使其成为初学者和需要快速执行和低开销的程序的绝佳选择。

本文介绍了 Bottle Web 框架,并使用有用的 Python 示例介绍了它的一些主要功能。


相关文章