39. Conclusión
Recordemos el trabajo realizado en este documento:
Capítulo | Dossier | Contenido |
Presentación del curso | ||
Configuración de un entorno de trabajo | ||
[bases] | Fundamentos del lenguaje Python: estructuras del lenguaje, tipos de datos, funciones, salida a consola, cadenas de formato, conversión de tipos, listas, diccionarios, expresiones regulares | |
[strings] | Notación de cadenas de caracteres – métodos de la clase <str> – codificación/decodificación de cadenas de caracteres en UTF-8 | |
[exceptions] | Gestión de excepciones | |
[fonctions] | Ámbito de las variables – modo de paso de parámetros – uso de módulos – Python Path – parámetros con nombre – funciones recursivas | |
[fichiers] | Lectura/escritura de un archivo de texto – gestión de archivos codificados en UTF-8 – gestión de archivos jSON | |
[impots/v01] | Version 1 del ejercicio de aplicación: un cálculo del impuesto sobre la renta. La aplicación se presenta en 18 versiones – La version 1 implementa una solución procedimental | |
[imports] | Gestión de las dependencias de una aplicación mediante la importación de módulos: se presenta un método de gestión de dependencias, que se utiliza en todo el documento; gestión de Python Path | |
[impots/v02] | La versión 2 de la aplicación retoma la versión 1 reuniendo todas las constantes de configuración en un archivo de configuración | |
[impots/v03] | La version 3 de la aplicación retoma la version 2 utilizando funciones encapsuladas en un módulo; la gestión de las dependencias se realiza mediante configuración – Introducción del archivo jSON para leer los datos necesarios para el cálculo del impuesto y escribir los resultados de los cálculos | |
[classes/01] | Clases – herencia – métodos y propiedades – getters / setters – constructor – propiedad [__dict__] | |
[classes/02] | Presentación de las clases [BaseEntity] y [MyException] utilizadas en el resto del documento – [BaseEntity] facilita las conversiones entre objetos y diccionarios | |
[troiscouches] | Arquitectura por capas y programación por interfaces. Este capítulo presenta los métodos de programación utilizados en el resto del documento | |
[impots/v04] | Version 4 de la aplicación: este version implementa una solución con una arquitectura por capas, programación por interfaces y el uso de clases derivadas de [BaseEntity] y [MyException] | |
[databases/mysql] | Instalación de SGBD MySQL – conexión a la base de datos – creación de una tabla – ejecución de órdenes SQL SELECT, UPDATE, DELETE, INSERT – transacción – consultas SQL configuradas | |
[databases/postgresql] | Instalación de SGBD PostgreSQL – conexión a la base de datos – creación de una tabla – ejecución de órdenes SQL SELECT, UPDATE, DELETE, INSERT – transacción – consultas SQL configuradas | |
[databases/anysgbd] | Escribir código independiente de SGBD | |
[databases/sqlalchemy] | El ORM (Object Relational Mapper) SqlAlchemy – un ORM permite trabajar de forma unificada con diferentes SGBD - clases de mapeo / tablas SQL – operaciones sobre las clases de imagen de las tablas SQL | |
[impots/v05] | Version 5 de la aplicación de cálculo de impuestos – Uso de la arquitectura por capas de version 04 y deORM SqlAlchemy para trabajar con los SGBD MySQL y PostgreSQL | |
[inet] | Programación de Internet – protocolo TCP / IP (Protocolo de control de transferencia / Protocolo de Internet) - protocolos HTTP (Protocolo de transferencia HyperText) – SMTP (Protocolo simple de transferencia de correo) – POP (Protocolo de oficina Post) – IMAP (Protocolo de acceso a mensajes de Internet) | |
[flask] | Servicios web con el marco web Flask – visualización de una página HTML – servicio web jSON – solicitudes GET y POST – gestión de una sesión web | |
[impots/http-servers/01] [impots/http-clients/01] | Version 6 del ejercicio de aplicación - Creación de un servicio web jSON para el cálculo de impuestos con una arquitectura multicapa - Escritura de un cliente web para este servidor con una arquitectura multicapa – programación cliente/servidor – uso del módulo [requests] | |
[impots/http-servers/02] [impots/http-clients/02] | Version 7 de la aplicación: se ha mejorado la versión version 6: el cliente y el servidor son multihilo – utilidades [Logger] para registrar los intercambios cliente/servidor – [SendMail] para enviar un correo electrónico al administrador de la aplicación | |
[impots/http-servers/03] [impots/http-clients/03] | Version 8 del ejercicio de aplicación: version 7 se mejora mediante el uso de una sesión | |
[xml] | Gestión XML con el módulo [xmltodict] | |
[impots/http-servers/04] [impots/http-clients/04] | Version 9 del ejercicio de aplicación: se modifica version 8 para que los intercambios cliente/servidor se realicen en XML; | |
[impots/http-servers/05] [impots/http-clients/05] | Version 10 del ejercicio de aplicación: en lugar de procesar N contribuyentes mediante N solicitudes GET, se utiliza una única solicitud POST con los N contribuyentes en el cuerpo del POST | |
[impots/http-servers/06] [impots/http-clients/06] | Version 11 del ejercicio de aplicación: se modifica la arquitectura cliente/servidor de la aplicación: la capa [métier] pasa del servidor al cliente | |
[impots/http-servers/07] | Version 12 del ejercicio de aplicación: este version implementa un servidor MVC (Modelo – Vista – Controller) que entrega indistintamente, a petición del cliente, jSON, XML y HTML. Este capítulo implementa las versiones jSON y XML del servidor | |
[impots/http-clients/07] | Implementación de clients, jSON y XML del servidor MVC de version 12 | |
[impots/http-servers/07] | Implementación del servidor HTML del version 12 – uso del marco CSS Bootstrap – | |
[impots/http-servers/08] | Version 13 del ejercicio práctico - Refactorización del código de version 12 – gestión de la sesión con el módulo [flask_session] y un servidor Redis – uso de contraseñas cifradas | |
[impots/http-servers/09] [impots/http-clients/09] | Version 14 del ejercicio práctico – Implementación de URL con un token CSRF (Cross Site Request Forgery) | |
[impots/http-servers/10] | Version 15 del ejercicio práctico: refactorización del código de version 14 para gestionar dos tipos de acciones: ASV (Acción Mostrar Vista), que solo sirven para mostrar una vista sin modificar el estado del servidor, ADS (Acción Do Something), que realizan una acción que modifica el estado del servidor; todas estas acciones terminan con una redirección a una acción ASV; esto permite gestionar correctamente las actualizaciones de página del navegador del cliente | |
[impots/http-servers/11] | Version 16 de la aplicación: gestión de URL con prefijo | |
[impots/http-servers/12] | Version 17 de la aplicación: migración de version 16 a un servidor Apache/Windows | |
[impots/http-servers/13] | Version 18 de la aplicación: corrige una anomalía de la versión version 17 |
Las aplicaciones cliente/servidor de cálculo de impuestos han implementado la siguiente arquitectura:

La capa [web] anterior se ha implementado con una arquitectura MVC:

El contenido del documento es denso. El lector que llegue hasta el final obtendrá una buena visión de la programación web MVC en Python / Flask y, además, una buena visión de la programación web MVC en otros lenguajes.
Se puede encontrar información complementaria sobre el framework Flask en el documento [https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world] del autor Miguel Grinberg. He leído algunos fragmentos de su curso y me han parecido muy didácticos. El autor presenta muchos conceptos que no se tratan en este documento.