39. Conclusione
Ricordiamo il lavoro svolto in questo documento:
Capitolo | Dossier | Contenuto |
Presentazione del corso | ||
Configurazione dell'ambiente di lavoro | ||
[bases] | Nozioni di base sul linguaggio Python – strutture del linguaggio – tipi di dati – funzioni – output in console – stringhe di formattazione – conversione dei tipi – liste – dizionari – espressioni regolari | |
[strings] | Notazione delle stringhe – metodi della classe <str> – codifica/decodifica delle stringhe in UTF-8 | |
[exceptions] | Gestione delle eccezioni | |
[fonctions] | Ambito delle variabili – Modalità di passaggio dei parametri – Utilizzo dei moduli – Il Python Path – Parametri con nome – Funzioni ricorsive | |
[fichiers] | Lettura/scrittura di un file di testo – gestione dei file codificati in UTF-8 – gestione dei file jSON | |
[impots/v01] | Versione 1 dell’esercizio pratico: calcolo dell’imposta sul reddito. L’applicazione è disponibile in 18 versioni – La versione 1 implementa una soluzione procedurale | |
[imports] | Gestione delle dipendenze di un’applicazione tramite importazione di moduli – viene presentato un metodo di gestione delle dipendenze – utilizzato in tutto il documento – gestione del Python Path | |
[impots/v02] | La versione 2 dell’applicazione riprende la versione 1 raggruppando tutte le costanti di configurazione in un unico file di configurazione | |
[impots/v03] | La versione 3 dell'applicazione riprende la versione 2 utilizzando funzioni incapsulate in un modulo – la gestione delle dipendenze avviene tramite configurazione – introduzione del file jSON per leggere i dati necessari al calcolo dell'imposta e scrivere i risultati dei calcoli | |
[classes/01] | Classi – ereditarietà – metodi e proprietà – getter / setter – costruttore – proprietà [__dict__] | |
[classes/02] | Presentazione delle classi [BaseEntity] e [MyException] utilizzate nel resto del documento – [BaseEntity] facilita le conversioni oggetto / dizionario | |
[troiscouches] | Architettura a livelli e programmazione tramite interfacce. Questo capitolo presenta i metodi di programmazione utilizzati nel resto del documento | |
[impots/v04] | Versione 4 dell’applicazione – questa versione implementa una soluzione con un’architettura a livelli, la programmazione tramite interfacce e l’utilizzo di classi derivate da [BaseEntity] e [MyException] | |
[databases/mysql] | Installazione di SGBD MySQL – connessione al database – creazione di una tabella – esecuzione di comandi SQL SELECT, UPDATE, DELETE, INSERT – transazione – query SQL configurate | |
[databases/postgresql] | Installazione di SGBD PostgreSQL – connessione al database – creazione di una tabella – esecuzione di comandi SQL SELECT, UPDATE, DELETE, INSERT – transazione – query SQL configurate | |
[databases/anysgbd] | Scrivere codice indipendente da SGBD | |
[databases/sqlalchemy] | L’ORM (Object Relational Mapper) SqlAlchemy – un ORM permette di lavorare in modo unificato con diversi SGBD - mappatura di classi / tabelle SQL – operazioni sulle classi e sulle immagini delle tabelle SQL | |
[impots/v05] | Versione 5 dell’applicazione per il calcolo delle imposte – Utilizzo dell’architettura a livelli della versione 04 e delORM SqlAlchemy per lavorare con SGBD MySQL e PostgreSQL | |
[inet] | Programmazione Internet – protocollo TCP / IP (Transfer Control Protocol / Internet Protocol) – protocolli HTTP (HyperText Transfer Protocol) – SMTP (Simple Mail Transfer Protocol) – POP (Post Office Protocol) – IMAP (Internet Message Access Protocol) | |
[flask] | Servizi web con il framework web Flask – visualizzazione di una pagina HTML – servizio web jSON – richieste GET e POST – gestione di una sessione web | |
[impots/http-servers/01] [impots/http-clients/01] | Versione 6 dell’esercizio pratico - Creazione di un servizio web jSON per il calcolo delle imposte con un’architettura multistrato - Scrittura di un client web per questo server con un’architettura multistrato – programmazione client/server – utilizzo del modulo [requests] | |
[impots/http-servers/02] [impots/http-clients/02] | Versione 7 dell'esercizio sull'applicazione – la versione 6 è stata migliorata: client e server sono multithread – utilità [Logger] per registrare gli scambi client/server – [SendMail] per inviare un'e-mail all'amministratore dell'applicazione | |
[impots/http-servers/03] [impots/http-clients/03] | Versione 8 dell’esercizio pratico – la versione 7 è stata migliorata grazie all’uso di una sessione | |
[xml] | Gestione XML con il modulo [xmltodict] | |
[impots/http-servers/04] [impots/http-clients/04] | Versione 9 dell’esercizio applicativo – la versione 8 è stata modificata per consentire lo scambio client/server in XML; | |
[impots/http-servers/05] [impots/http-clients/05] | Versione 10 dell'esercizio pratico – invece di elaborare N contribuenti tramite N richieste GET, si utilizza un'unica richiesta POST con i N contribuenti nel corpo della richiesta POST | |
[impots/http-servers/06] [impots/http-clients/06] | Versione 11 dell’esercizio applicativo – l’architettura client/server dell’applicazione viene modificata: il livello [métier] passa dal server al client | |
[impots/http-servers/07] | Versione 12 dell’esercizio pratico – questa versione implementa un server MVC (Model – View – Controller) che fornisce, a richiesta del client, indifferentemente jSON, XML e HTML. Questo capitolo implementa le versioni jSON e XML del server | |
[impots/http-clients/07] | Implementazione dei client jSON e XML del server MVC della versione 12 | |
[impots/http-servers/07] | Implementazione del server HTML della versione 12 – utilizzo del framework CSS Bootstrap – | |
[impots/http-servers/08] | Versione 13 dell'esercizio pratico - Rifattorizzazione del codice della versione 12 – gestione della sessione con il modulo [flask_session] e un server Redis – utilizzo di password crittografate | |
[impots/http-servers/09] [impots/http-clients/09] | Versione 14 dell'esercizio pratico – implementazione di URL con un token CSRF (Cross Site Request Forgery) | |
[impots/http-servers/10] | Versione 15 dell’esercizio pratico – rifattorizzazione del codice della versione 14 per gestire due tipi di azioni: ASV (Action Show View), che servono solo a visualizzare una vista senza modificare lo stato del server, ADS (Azione Do Something) che eseguono un’operazione che modifica lo stato del server – queste azioni terminano tutte con un reindirizzamento verso un’azione ASV – ciò consente di gestire correttamente gli aggiornamenti della pagina nel browser del client | |
[impots/http-servers/11] | Versione 16 dell’applicazione – gestione delle URL con prefisso | |
[impots/http-servers/12] | Versione 17 dell’applicazione – migrazione della versione 16 su un server Apache / Windows | |
[impots/http-servers/13] | Versione 18 dell'applicazione – corregge un'anomalia della versione 17 |
Le applicazioni client/server per il calcolo delle imposte hanno implementato la seguente architettura:

Il livello [web] sopra indicato è stato implementato con un'architettura MVC:

Il contenuto del documento è denso. Il lettore che lo seguirà fino in fondo avrà una buona visione della programmazione web MVC in Python / Flask e, oltre a ciò, una buona visione della programmazione web MVC in altri linguaggi.
È possibile trovare ulteriori informazioni sul framework Flask nel documento [https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world] dell’autore Miguel Grinberg. Ho letto alcuni passaggi del suo corso e li ho trovati molto didattici. L’autore presenta molti concetti non trattati in questo documento.