Módulo 4
Webs con Django
La misma agenda de contactos del módulo anterior, ahora servida por una web: modelos, vistas, plantillas, formularios, usuarios y puesta en producción.
📚 45 lecciones
⏱ 710 min en total
- 1Qué es Django y cómo funciona la webTu programa deja de ejecutarse en tu ordenador y pasa a ejecutarse en otro, contestando preguntas de gente que no conoces.14 min
- 2HTTP: peticiones, respuestas, métodos y códigosEl único protocolo que hay que entender para programar en la web, y las cuatro decisiones que te obliga a tomar en cada página.16 min
- 3Instalación: el entorno virtual y el primer proyectoLa primera dependencia del curso, por qué no se instala a lo bruto, y las dos órdenes que crean un proyecto de Django.15 min
- 4La estructura de ficheros de un proyectoSiete ficheros, uno vacío, dos que no vas a tocar nunca y dos que vas a abrir todos los días.12 min
- 5El servidor de desarrollo y los ajustesQué te está diciendo runserver cada vez que arranca, y los cinco ajustes que se cambian el primer día.14 min
- 6Tu primera vista y su URLUna función que recibe una petición y devuelve una respuesta, y la lista que decide cuál se llama.13 min
- 7Las aplicaciones dentro del proyectoPor qué un proyecto de Django se parte en trozos, dónde va por fin tu código, y el olvido que no da ningún error.14 min
- 8Modelos: la primera tablaUna clase de Python que resulta ser una tabla, el SQL que Django escribe por ti, y la columna que aparece sin que la pidas.15 min
- 9Tipos de campo y sus opcionesLos quince campos que se usan de verdad, las ocho opciones que aceptan casi todos, y las tres decisiones que luego cuesta cambiar.18 min
- 10MigracionesEl historial de cómo ha cambiado tu base de datos, escrito en ficheros que se guardan con el código.17 min
- 11El intérprete de Django y el ORMUn sitio donde probar consultas sin montar una página, y la pieza que traduce entre objetos y SQL.15 min
- 12Filtros y consultasTodo lo que se puede preguntar sin escribir SQL, y las tres cosas que se rompen al buscar y ordenar en español.19 min
- 13Relaciones con ForeignKeyCuando un dato repetido deja de ser un texto y pasa a ser otra tabla, y la pregunta que Django te obliga a contestar.17 min
- 14ManyToMany y OneToOneUna tabla que no has escrito, una relación que se maneja con métodos en vez de con asignaciones, y el caso en que partir un modelo en dos es lo correcto.16 min
- 15Métodos del modelo, Meta y __str__Cómo dejar de repartir la lógica de un contacto por todas las vistas, y los ajustes que valen para la tabla entera.16 min
- 16Vistas basadas en funcionesJuntar por fin los modelos con las páginas, dejar de construir HTML con f-strings, y la carpeta que se repite dos veces con motivo.15 min
- 17El lenguaje de plantillasUn lenguaje a propósito pequeño, el punto que sirve para cuatro cosas, y el silencio con el que se traga tus erratas.16 min
- 18Herencia de plantillasEscribir la cabecera del sitio una vez, los tres niveles que aguantan un proyecto entero, y la diferencia entre heredar e incluir.14 min
- 19Filtros y etiquetas propiasCuando el lenguaje de plantillas se queda corto, se amplía: un módulo, un decorador y una función normal de Python.14 min
- 20Ficheros estáticosEl CSS, las imágenes y el JavaScript, por qué no se ponen con una ruta a mano, y el día que el sitio se queda sin estilos.14 min
- 21URLs con parámetros y con nombreLos conversores que validan antes de llegar a la vista, y dejar de escribir direcciones a mano en todo el proyecto.15 min
- 22Vistas basadas en clasesLa otra forma de escribir vistas: un método por método HTTP, herencia en vez de copiar, y el precio de no ver el código que se ejecuta.15 min
- 23ListView y DetailViewDos clases que sustituyen las dos vistas que ya tienes, la paginación que sale sola, y los nombres que hay que adivinar.15 min
- 24CreateView, UpdateView y DeleteViewLas tres vistas que faltan para el CRUD completo, el formulario que se genera solo, y adónde se va después de guardar.15 min
- 25FormulariosLa clase que resuelve de golpe los tres fallos del ejemplo marcado como incorrecto, y el ciclo de ocho líneas que se repite en todas las vistas.15 min
- 26ModelFormEl formulario que se escribe solo a partir del modelo, el `commit=False` que hace falta más de lo que parece, y la línea que se olvida todo el mundo.16 min
- 27ValidaciónEl orden exacto en que Django comprueba las cosas, los tres sitios donde puedes meter el tuyo, y el `return` que se olvida y destruye datos en silencio.16 min
- 28Widgets y cómo se dibuja un formularioLa pieza que decide el HTML, el selector de fechas que sale vacío, y el desplegable que aparece en inglés.15 min
- 29Subida de ficherosDos atributos que hay que poner o no llega nada, los ficheros huérfanos que nadie borra, y por qué un fichero subido es siempre sospechoso.16 min
- 30El panel de administraciónLa aplicación que lleva instalada desde la lección 4, las tres banderas que deciden quién entra, y para qué no hay que usarla.14 min
- 31Personalizar el panelVeinte atributos que convierten una tabla de filas en una herramienta usable, y el N+1 que el panel resuelve solo y el que no.16 min
- 32Registro, inicio y cierre de sesiónLas ocho vistas que ya están escritas, el enlace de salir que dejó de funcionar, y por qué el mensaje de error es tan poco concreto.16 min
- 33Permisos y decoradoresCerrar las páginas con una línea, el decorador que manda a identificarse a quien ya está identificado, y la diferencia entre permisos por modelo y por fila.16 min
- 34Modelo de usuario personalizadoLa decisión que hay que tomar en el primer día del proyecto, el error exacto que sale si te acuerdas tarde, y las tres formas de hacerlo.15 min
- 35Mensajes y sesionesEl aviso de que algo ha ido bien, que sobrevive a una redirección, y la lista de la sesión que se niega a crecer.14 min
- 36PaginaciónLa clase que hay debajo de `paginate_by`, el aviso que casi nadie ve, y por qué la página mil tarda más que la primera.14 min
- 37Búsqueda y filtrosEl buscador que no encuentra a Óscar, el desplegable vacío que tira la página, y cómo se combinan filtros sin escribir un `if` por cada uno.16 min
- 38Envío de correoEl ajuste que Django 6 acaba de cambiar entero, el correo que se pierde sin decir nada, y la recuperación de contraseña que quedó a medias en la lección 32.16 min
- 39PruebasProbar que una vista cerrada no responde `200`, que la lista no tiene el problema N+1, y que el correo de recuperación lleva el enlace dentro.18 min
- 40Configuración por entornosLa clave secreta que está en el repositorio de medio internet, partir los ajustes en tres ficheros, y el `check --deploy` que dice ocho cosas.15 min
- 41De SQLite a PostgreSQLEl `database is locked` que no aparece hasta que hay usuarios, el nombre de 500 letras que cabe en un campo de 100, y las búsquedas en español que por fin funcionan.17 min
- 42SeguridadLo que Django protege solo, los tres huecos que deja el escape automático, y el ajuste con nombre en español que aparece en claro en la página de error.18 min
- 43DespliegueQuién sirve los estáticos, cuántos procesos hacen falta y cuánta memoria comen, y las cuatro cosas que hay que hacer en cada actualización.17 min
- 44Proyecto: una bitácora con comentariosUn blog completo con borradores, etiquetas, búsqueda y comentarios. Con las tres decisiones que lo sostienen y las diecisiete pruebas que lo demuestran.22 min
- 45Proyecto: un tablero de incidencias listo para producciónEl proyecto que llega hasta el servidor: usuario propio desde el minuto uno, avisos por correo que no tiran la operación, ajustes por entorno y veinte pruebas.24 min