feat: added improvements from django-htmx-template
CI / test (push) Successful in 1m2s
CI / build (push) Successful in 50s

This commit is contained in:
2026-09-21 14:27:17 +02:00
parent e76b4b7a9c
commit 5fe349d617
12 changed files with 106 additions and 34 deletions
+20 -8
View File
@@ -65,16 +65,20 @@ uv sync --group dev
```
Crea un archivo `.env` en la raíz del proyecto (ver
[Variables de entorno](#variables-de-entorno) más abajo). Para desarrollo
local basta con:
[Variables de entorno](#variables-de-entorno) más abajo). `SECRET_KEY` y
`ALLOWED_HOSTS` son las únicas que no tienen un valor por defecto (a
propósito: una clave/lista de hosts insegura conocida de antemano no
protege nada), así que hacen falta incluso en desarrollo local:
```env
DEBUG=True
SECRET_KEY=cualquier-cadena-larga-y-aleatoria
ALLOWED_HOSTS=*
```
Con eso, la app arranca con SQLite, `SECRET_KEY` de desarrollo, envío de
email al backend de consola (se imprime en la terminal en vez de mandarse
de verdad) y sin credenciales adicionales.
Con eso, la app arranca con SQLite, envío de email al backend de consola
(se imprime en la terminal en vez de mandarse de verdad) y sin
credenciales adicionales.
```bash
uv run python manage.py migrate
@@ -164,12 +168,17 @@ commit.
Todas se leen en `config/settings/env.py`; sin `.env`, o si falta alguna,
se usan los valores por defecto indicados (pensados para desarrollo local).
`SECRET_KEY` y `ALLOWED_HOSTS` son la excepción: no tienen valor por
defecto, así que el arranque falla con un error claro
(`ImproperlyConfigured`) si faltan, en vez de servir tráfico con una clave
insegura conocida de antemano o con el check de `Host` desactivado de
hecho.
| Variable | Por defecto | Descripción |
|---|---|---|
| `SECRET_KEY` | clave insegura de desarrollo | **Cámbiala en producción.** |
| `SECRET_KEY` | *(obligatoria)* | Clave única y secreta. **Distinta en cada entorno, nunca la de otro despliegue.** |
| `DEBUG` | `False` | Activa páginas de error detalladas, Django Debug Toolbar y Silk. No debe estar activo en producción. |
| `ALLOWED_HOSTS` | `*` | Lista separada por comas. Debe restringirse a los dominios reales en producción. |
| `ALLOWED_HOSTS` | *(obligatoria)* | Lista separada por comas. `*` vale para desarrollo local; restringida a los dominios reales en producción. |
| `CSRF_TRUSTED_ORIGINS` | `http://localhost:8000` | Lista separada por comas. Necesario si la app se sirve detrás de un dominio/HTTPS distinto. |
| `DATABASE_URL` | `sqlite:///db.sqlite3` | Formato `django-environ` (p. ej. `postgres://usuario:password@host:5432/nombre_bd`). |
| `S3_ENABLED` | `False` | Si es `True`, los archivos subidos (imágenes de portada/patrón) se guardan en S3 en vez de en el filesystem local. |
@@ -219,7 +228,10 @@ La imagen Docker ya ejecuta `collectstatic`, `compilemessages` y el
CSS precompilado al construirse, y sirve la app con Uvicorn (variables
`WSGI_HOST`/`WSGI_WORKERS` para ajustar host/nº de workers). WhiteNoise se
encarga de servir los estáticos directamente desde la propia app, sin
necesidad de un servidor/proxy de estáticos aparte.
necesidad de un servidor/proxy de estáticos aparte; también sirve
`/media/` (portadas/imágenes de patrón) cuando `S3_ENABLED=False` (ver
`crochet/middleware.py`), así que tampoco hace falta nada aparte para eso
salvo que uses S3.
Al hacer push a `master` se dispara la integración continua (tests) y,
si pasan, se construye y publica una imagen Docker (ver