Bottle: microframework Python para API y web

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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                    

Recommendations