Saltar al contenido
🐍 Curso de Python
/

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
  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 10MigracionesEl historial de cómo ha cambiado tu base de datos, escrito en ficheros que se guardan con el código.17 min
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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