Ir al contenido

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.

Una app sencilla para:

  • Subir archivos con un formulario
  • Listar archivos subidos
  • Descargar archivos por ID
myapp/
├── app/
│ ├── web/
│ │ └── upload.pgo ← Modelo, handler, ruta
│ └── templates/
│ └── upload.html ← Formulario HTMX + lista
└── pygo.toml

Crea app/web/upload.pgo:

# Importar el paquete storage (incluido en PyGo)
from storage import LocalStore
# Modelo para registrar archivos
model UploadedFile:
id: String
filename: String
content_type: String
size: Integer
created: DateTime
# Inicializar storage local
store = LocalStore("./uploads", "/files")
handler upload:
upload_file(file: File) -> String:
result = store.save(file)
return f"Archivo guardado: {result['id']}"
route POST /upload -> upload

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>
Terminal window
pygo dev
curl -F "file=@test.txt" http://localhost:8080/upload
  1. from storage import LocalStore → transpiler genera código Go + Python
  2. Runtime inicializa storage al iniciar
  3. Handler usa store.save(file) de forma transparente