Bottle: Guía completa del microframework Python
Introducción a Bottle
Bottle es un microframework minimalista de Python para crear aplicaciones web y APIs REST. Todo el framework está escrito en un solo archivo de menos de 100 KB, lo que lo convierte en la solución ideal para proyectos pequeños, prototipos, sistemas embebidos y microservicios. Bottle proporciona todos los componentes necesarios para ejecutar una aplicación web completa sin dependencias externas.
Características y ventajas de Bottle
Ligereza y simplicidad
Bottle no requiere dependencias externas y se instala con un solo comando. El framework ocupa un único archivo, lo que facilita el despliegue y la comprensión del código.
Funcionalidades integradas
- Servidor HTTP integrado para desarrollo
- Motor de plantillas propio SimpleTemplate Engine
- Soporte WSGI para despliegue en producción
- Detección automática de tipos de parámetros en rutas
- Manejo de JSON, formularios, archivos y cookies
Flexibilidad arquitectónica
Bottle es compatible con cualquier librería de Python para bases de datos, motores de plantillas y servidores WSGI. Esto permite integrarlo fácilmente en sistemas existentes.
Instalación y configuración básica
Instalación de Bottle
pip install bottle
Creación de la primera aplicación
Crea un archivo app.py:
from bottle import route, run
@route('/')
def index():
return "¡Hola desde Bottle!"
@route('/hello/<name>')
def greet(name):
return f"¡Hola, {name}!"
if __name__ == "__main__":
run(host='localhost', port=8080, debug=True)
Ejecutar la aplicación
python app.py
La aplicación estará disponible en http://localhost:8080
Enrutamiento y manejo de peticiones
Rutas básicas
from bottle import route, get, post, put, delete
@route('/')
def home():
return "Página principal"
@get('/users')
def get_users():
return "Lista de usuarios"
@post('/users')
def create_user():
return "Crear usuario"
@put('/users/<id:int>')
def update_user(id):
return f"Actualizar usuario {id}"
@delete('/users/<id:int>')
def delete_user(id):
return f"Eliminar usuario {id}"
Parámetros de ruta
Bottle soporta varios tipos de parámetros:
@route('/user/<id:int>')
def user_by_id(id):
return f"Usuario ID: {id}"
@route('/article/<slug:path>')
def article_by_slug(slug):
return f"Artículo: {slug}"
@route('/price/<amount:float>')
def price(amount):
return f"Precio: {amount}"
@route('/profile/<username:re:[a-zA-Z0-9_]+>')
def profile(username):
return f"Perfil: {username}"
Manejo de parámetros query
from bottle import request
@route('/search')
def search():
query = request.query.get('q', '')
category = request.query.get('category', 'all')
return f"Búsqueda '{query}' en categoría '{category}'"
Trabajo con datos de la petición
Manejo de formularios
from bottle import request, post
@post('/submit')
def submit_form():
name = request.forms.get('name')
email = request.forms.get('email')
age = request.forms.get('age', type=int)
return f"Datos recibidos: {name}, {email}, {age}"
Trabajo con JSON
from bottle import request, response
@post('/api/data')
def handle_json():
data = request.json
# Procesar datos
result = {
'status': 'success',
'received': data,
'message': 'D También en la biblioteca
Geolocalización y mapas en C++: revisión de bibliotecas y herramientas
charm/bubbletea para Go: guía completa con ejemplos
Métricas de Prometheus en TypeScript: guía completa de monitoreo
Criptografía en Node.js: cifrado y hash con crypto
Biblioteca WebSocket Java: Tyrus — implementación de JSR 356 para tiempo real