Tutorial 1 — Hola Mundo con Storage
Tutorial 1: Hola Mundo con Storage
Sección titulada «Tutorial 1: Hola Mundo con Storage»Este tutorial muestra cómo construir una aplicación de subida de archivos usando el paquete nativo storage de PyGo — almacenamiento local que funciona sin configuración.
🎯 Qué construirás
Sección titulada «🎯 Qué construirás»Una app sencilla para:
- Subir archivos con un formulario
- Listar archivos subidos
- Descargar archivos por ID
📁 Estructura
Sección titulada «📁 Estructura»myapp/├── app/│ ├── web/│ │ └── upload.pgo ← Modelo, handler, ruta│ └── templates/│ └── upload.html ← Formulario HTMX + lista└── pygo.toml📝 Paso 1: Define el Modelo & Handler
Sección titulada «📝 Paso 1: Define el Modelo & Handler»Crea app/web/upload.pgo:
# Importar el paquete storage (incluido en PyGo)from storage import LocalStore
# Modelo para registrar archivosmodel UploadedFile: id: String filename: String content_type: String size: Integer created: DateTime
# Inicializar storage localstore = LocalStore("./uploads", "/files")
handler upload: upload_file(file: File) -> String: result = store.save(file) return f"Archivo guardado: {result['id']}"
route POST /upload -> upload📝 Paso 2: Template con HTMX
Sección titulada «📝 Paso 2: Template con HTMX»Crea app/templates/upload.html:
<div x-data="{ uploading: false }"> <form hx-post="/upload" hx-swap="outerHTML" enctype="multipart/form-data" @submit="uploading = true" > <input type="file" name="file" required /> <button :disabled="uploading"> <span x-show="!uploading">Subir</span> <span x-show="uploading">Subiendo...</span> </button> </form></div>📝 Paso 3: Ejecutar y Probar
Sección titulada «📝 Paso 3: Ejecutar y Probar»pygo devcurl -F "file=@test.txt" http://localhost:8080/upload🏗️ Cómo funciona
Sección titulada «🏗️ Cómo funciona»from storage import LocalStore→ transpiler genera código Go + Python- Runtime inicializa storage al iniciar
- Handler usa
store.save(file)de forma transparente
Próximos pasos
Sección titulada «Próximos pasos»- Tutorial 2: Multitenancy con Auth
- pygo module CLI (instala paquetes adicionales)