首页/新闻资讯/正文详情

Bottle 框架快速上手:Python 轻量级 WSGI 微框架从安装到路由实战

发布时间:2026/9/25 3:49:19 来源:云帆数科 栏目:资讯中心
Bottle 框架快速上手:Python 轻量级 WSGI 微框架从安装到路由实战
后端Web框架【免费下载链接】bottlebottle.py is a fast and simple micro-framework for python web-applications.项目地址https://gitcode.com/gh_mirrors/bo/bottle点击查看免费下载Bottle 是一个以单一bottle.py文件分发、除 Python 标准库外零依赖的轻量级 WSGI 微框架本指南以其官方文档 docs/index.rst 为骨架结合当前仓库源码带你掌握路由映射、模板渲染、内置服务器启动、安装部署方式以及文档体系导航读完即可用几行代码跑起一个可访问的 Web 应用。框架概览为什么选择 BottleBottle 定位是 fast, simple and lightweight它把 Web 开发中最常用的能力压缩进一个单文件模块 bottle.py约 4500 行中核心特性集中在四个方面路由Routing将 HTTP 请求映射到 Python 函数支持整洁的动态 URL如/hello/name由 bottle.py 中的 Router 类 实现底层将路由规则编译为正则表达式进行匹配。模板Templates自带快速且 Pythonic 的内置模板引擎SimpleTemplate详见 docs/stpl.rst同时支持 Mako、Jinja2、Cheetah 等第三方模板引擎。工具Utilities提供对表单数据、文件上传、Cookie、请求头等 HTTP 特性的便捷访问全部封装在 BaseRequest 类 中。服务器Server内置 HTTP 开发服务器并提供面向 gunicorn、paste、cheroot 等众多 WSGI 服务器的现成适配器详见 docs/deployment.rst。由于整个框架就是一个模块文件你可以直接把它拷贝进项目目录使用也可以作为标准 WSGI 应用挂载到任何 WSGI 兼容的环境中。一分钟上手Hello World 示例官方文档给出的入门示例展示了 Bottle 的三个核心 API——route装饰器、template函数和run启动器from bottle import route, run, template route(/hello/name) def index(name): return template(bHello {{name}}/b!, namename) run(hostlocalhost, port8080)把这段代码保存为脚本运行或直接粘贴进 Python 交互式控制台然后访问http://localhost:8080/hello/world即可看到渲染结果。它的工作原理值得拆解route(/hello/name)把/hello/name这个 URL 路径绑定到index函数name是通配符URL 中对应片段会作为关键字参数name传入函数。template(...)调用内置模板引擎将{{name}}占位符替换为传入的值并渲染出 HTML。run(hostlocalhost, port8080)启动内置开发服务器阻塞运行直到按 Ctrl-C 停止。从源码看run函数的完整签名bottle.py#L3800默认使用wsgiref服务器适配器、绑定127.0.0.1:8080开发期无需任何额外配置即可运行。安装与获取三种方式对比官方文档明确说明 Bottle 除 Python 标准库外没有硬性依赖模板或服务器适配器类需要对应模块时才需要额外安装。方式一pip 安装稳定版推荐pip install bottle方式二直接下载单文件把bottle.py下载到项目目录即可使用无需安装wget https://bottlepy.org/bottle.py方式三配合虚拟环境使用更推荐为每个项目创建独立虚拟环境再安装python3 -m venv venv # 创建虚拟环境 source venv/bin/activate # 切换默认 Python 到虚拟环境 pip install -U bottle # 在虚拟环境中安装 bottle此外Bottle 既是模块也是命令行程序。通过 pip 安装后路径上会出现bottle命令可用于启动应用详见 docs/tutorial.rstbottle --help python3 -m bottle --help ./path/to/bottle.py --help示例使用--debug与--reload启动模块mymodulebottle --debug --reload mymodule输出类似Bottle v0.13-dev server starting up (using WSGIRefServer())... Listening on http://localhost:8080/ Hit Ctrl-C to quit.注意0.13 版本起可执行脚本从bottle.py更名为bottle旧名称已弃用以避免循环导入问题。Python 版本支持矩阵Dead Snakes 策略Bottle 0.12 及之前版本支持了极为宽泛的 Python 版本其中一些早已停止维护超过十年。自 0.13 起项目只保证与仍在官方维护周期内的 Python 版本保持向后兼容旧版本 Python 可能仍能运行但不再经过兼容性测试。官方文档中的支持矩阵如下Bottle 版本Python 2Python 30.122.5 - 2.73.2 - 3.120.132.73.80.14规划中已放弃3.9文档脚注进一步说明Bottle 通常仍能在刚停止维护的 Python 3.x 版本上运行项目不会刻意破坏兼容性但也不再针对这些版本进行测试使用时需自行承担风险。如果你的生产环境必须依赖较老的 dead snakes Python建议停留在 Bottle 0.12长期支持版否则应定期升级以获取新功能与改进。四大核心能力详解结合文档路标与源码下面深入每一项核心能力。1. 路由从静态路径到动态 URL路由是 Bottle 最重要的概念。route装饰器将 URL 路径与回调函数绑定一个回调可以绑定多个路由动态路由中的通配符会以关键字参数形式传入函数route(/) route(/hello/name) def greet(nameStranger): return template(Hello {{name}}, how are you?, namename)通配符语法为name默认匹配到下一个斜杠为止通过过滤器可约束和转换匹配内容详见 docs/routing.rst。内置过滤器对应源码 Router.filters 中的实现过滤器匹配规则说明:int有符号数字转换为int对应正则-?\d:float小数转换为float对应正则-?[\d.]:path非贪婪匹配任意字符含/可匹配多段路径对应正则.?:re在配置字段中指定自定义正则匹配值不经过类型转换实战示例route(/object/id:int) def callback(id): assert isinstance(id, int) route(/show/name:re:[a-z]) def callback(name): assert name.isalpha() route(/static/path:path) def callback(path): return static_file(path, ...)2. HTTP 方法与头部处理所有未指定方法的路由默认只匹配 GET 请求。处理 POST、PUT、DELETE、PATCH 时可在route装饰器中传method参数或直接使用get、post、put、delete、patch五个快捷装饰器见 bottle.py#L898-L916。表单登录示例from bottle import get, post, request get(/login) # 显示表单 def login(): return form action/login methodPOST Username: input nameusername typetext / Password: input namepassword typepassword / input valueLogin typesubmit / /form post(/login) # 处理提交 def do_login(): username request.forms.username password request.forms.password if check_login(username, password): return pYour login information was correct./p else: return pLogin failed./p此外有两个特殊方法值得注意HEAD自动回退到对应的 GET 路由并截断响应体用于获取资源的元信息无需手动声明 HEAD 路由。ANY非标准方法作为低优先级兜底——ANY路由会匹配任意 HTTP 方法但仅当没有更具体的匹配路由时生效非常适合代理路由proxy-route场景。从源码看Bottle 实例本身就是一个可调用的 WSGI 应用__call__委托给wsgi方法见 bottle.py#L1091-L1093_handle负责执行路由匹配与回调调用。3. 模板内置引擎与第三方支持Bottle 自带 SimpleTemplate 引擎支持{{...}}变量插值、%行内 Python 代码等语法详细教程见 docs/stpl.rst。同时通过适配器支持 Mako、Jinja2 和 Cheetah 模板模板引擎的插件化加载实现在 TemplatePlugin 类。4. 服务器内置开发服务器与生产部署适配开发期用run()即可生产部署时 Bottle 提供大量 WSGI 服务器适配器gunicorn、paste、cheroot、bjoern、flup 等配置方式见 docs/deployment.rst。run的关键参数源码签名见 bottle.py#L3800-L3809参数默认值说明host127.0.0.1绑定地址传0.0.0.0监听所有网络接口port8080端口低于 1024 需要 root 权限serverwsgiref服务器适配器名称或ServerAdapter子类reloaderFalse是否启用自动重载interval1自动重载检查间隔秒quietFalse是否抑制输出debugNone调试模式开关文档导航官方文档体系与进阶路线官方文档索引把全部文档按五个主题组织每篇对应一个进阶方向。以下均为当前仓库docs/目录下的真实文件可作为持续学习的地图入门篇Getting Starteddocs/tutorial.rst —— 用户指南从 Hello World 到请求数据、Cookie、会话的完整实战教程docs/api.rst —— 自动生成的完整 API 参考docs/changelog.rst —— 版本变更日志docs/faq.rst —— 常见问题解答进阶主题Advanced Topicsdocs/routing.rst —— 路由匹配规则、过滤器自定义与 URL 构建docs/configuration.rst —— 应用配置系统ConfigDictdocs/stpl.rst —— SimpleTemplate 模板引擎语法详解docs/deployment.rst —— 多服务器部署、负载均衡与反向代理docs/async.rst —— 异步与并发主题插件Pluginsdocs/plugins/index.rst —— 插件概览docs/plugins/dev.rst —— 插件开发指南docs/plugins/list.rst —— 插件列表补充与开发docs/tutorial_app.rst —— 一个完整的应用教程Todo 清单示例docs/development.rst —— 项目开发贡献指南docs/contributors.rst —— 贡献者名单其中路由、配置、模板引擎与部署四篇是进阶到生产级应用必读的核心材料。从源码看框架核心实现为进一步印证文档描述当前仓库的 bottle.py 提供了全部实现证据请求处理链路Bottle.wsgi()bottle.py#L1059是 WSGI 入口内部先调用_handle(environ)完成路由匹配与回调执行再通过_castbottle.py#L984对回调返回值进行类型归一化最后调用 WSGI 的start_response输出。catchall配置为True时未捕获异常会转为 500 错误页而不会击垮 WSGI 服务器。动态路由编译Router.add()bottle.py#L329把通配符规则编译成带命名分组(?Pname...)的正则表达式静态路由单独存入self.static字典优先匹配动态路由存入self.dyna_routes。CPython 正则单次最多支持 99 个分组源码中_MAX_GROUPS_PER_PATTERN 99bottle.py#L278对此做了显式限制。核心插件机制每个Bottle实例在初始化时自动安装JSONPlugin与TemplatePluginbottle.py#L630-L631——这正是返回字典自动转为 JSON 响应模板自动渲染两个开箱即用行为的来源。Hook 机制支持before_request、after_request、app_reset、config四类钩子bottle.py#L636其中after_request按逆序执行便于在响应阶段做统一加工。许可与使用须知Bottle 的代码与文档以 MIT 许可证发布许可证全文见仓库根目录 LICENSE。但有一个重要例外Bottle 的 Logo 不受该许可证覆盖——Logo 仅允许用于指向 Bottle 主页的链接或与未修改的库直接相关的情境其他情况使用前需先征求许可。结语从本文可以看出Bottle 的价值在于小而不薄单文件、零依赖让上手成本几乎为零而路由过滤器、内置模板引擎、插件机制、WSGI 兼容性等设计又保证了它足以支撑真实项目。建议按本文的文档地图结合 bottle.py 源码逐篇深入尤其是 docs/tutorial.rst 的完整教程与 docs/routing.rst 的动态路由进阶即可从能跑通走向用得精。赞分享后端Web框架【免费下载链接】bottlebottle.py is a fast and simple micro-framework for python web-applications.项目地址https://gitcode.com/gh_mirrors/bo/bottle点击查看免费下载相关推荐Bottle: 轻量级Python Web框架Bottle: 轻量级Python Web框架 项目基础介绍和主要编程语言 Bottle是一个快速、简单且轻量级的WSGI微型Web框架专为Python开发。后端Web框架Pyflame进阶用法时间戳模式与火焰图表生成指南Pyflame进阶用法时间戳模式与火焰图表生成指南 Pyflame是一款强大的Python性能分析工具能够生成火焰图来可视化Python程序的性能瓶颈。本文【限时免费】 《zinx的安装与使用教程》《zinx的安装与使用教程》 引言 在当今高并发的互联网应用场景中如何快速构建稳定可靠的服务器框架是开发者面临的重要挑战。zinx作为基于Golang的轻量级后端网络通信上一篇如何快速掌握OpenSSH终极跨平台远程连接指南下一篇语音AI智能体落地拆解先跑通30秒链路再谈凌晨也接得住的语音客服创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

PaddleSeg QualityInspector 中的 Faster R-CNN 模型库全解析:配置体系、精度清单与工业质检实战
PaddleSeg QualityInspector 中的 Faster R-CNN 模型库全解析:配置体系、精度清单与工业质检实战

人工智能计算机视觉预训练 【免费下载链接】PaddleSeg Easy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting,… · 2026/9/25 3:49:12

Windows下libcurl与OpenSSL 32/64位开发库配置与避坑指南
Windows下libcurl与OpenSSL 32/64位开发库配置与避坑指南

简介:这份资源是面向 Windows 平台 C/C 开发者的 libcurl 与 OpenSSL 动态开发库合集,主要解决在项目中集成 HTTPS 请求、SSL/TLS 加密通信及常见密码学功能时的依赖配置问题,适合需要处理网络传输与安全加密的中高级开发者使用。压缩包内共 … · 2026/9/25 3:49:06

react-vis 零构建上手:在 CodePen 中通过 CDN 快速体验数据可视化组件
react-vis 零构建上手:在 CodePen 中通过 CDN 快速体验数据可视化组件

数据可视化图表库前端 【免费下载链接】react-vis Data Visualization Components 项目地址: https://gitcode.com/gh_mirrors/re/react-vis 点击查看 免费下载 本文基于 react-vis 官方「React-vis in codepen」入门文档,完整讲解如何在无需 npm 安装、… · 2026/9/25 3:49:06

深入gnhf编排器架构:状态机如何让AI代理整夜循环不丢一行代码
深入gnhf编排器架构:状态机如何让AI代理整夜循环不丢一行代码

深入gnhf编排器架构:状态机如何让AI代理整夜循环不丢一行代码 【免费下载链接】gnhf Before I go to bed, I tell my agents: good night, have fun 项目地址: https://gitcode.com/gh_mirrors/gn/gnhf gnhf(good night, have fun)是一… · 2026/9/25 4:25:44

VirtualBox E_FAIL (0x80004005) 报错全解析:从驱动冲突到UUID修复
VirtualBox E_FAIL (0x80004005) 报错全解析:从驱动冲突到UUID修复

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:25:44

MIPI DSI转LVDS桥接方案:LT9211与N76E003配置实战
MIPI DSI转LVDS桥接方案:LT9211与N76E003配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:25:44

Windows 11锁屏机制深度解析与分版本禁用方案
Windows 11锁屏机制深度解析与分版本禁用方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:25:44

必应搜索出现Ref A/B/C标签?原因排查与解决指南
必应搜索出现Ref A/B/C标签?原因排查与解决指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:25:37

Cadence Sigrity TDR仿真实战:从原理到阻抗曲线分析
Cadence Sigrity TDR仿真实战:从原理到阻抗曲线分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:25:37

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码