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://127.0.0.1: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://127.0.0.1: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 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告