39. Conclusione
Rivediamo il lavoro svolto in questo documento:
Capitolo | Repository del codice | Indice |
Panoramica del corso | ||
Configurazione dell'ambiente di lavoro | ||
[Nozioni di base] | Nozioni di base sul linguaggio Python – strutture del linguaggio – tipi di dati – funzioni – output della console – stringhe di formattazione – conversione dei tipi – liste – dizionari – espressioni | |
[stringhe] | Notazione stringa – metodi della classe <str> – codifica/decodifica stringhe in UTF-8 | |
[eccezioni] | Gestione delle eccezioni | |
[funzioni] | Ambito delle variabili – Parametri Passaggio – Utilizzo dei moduli – Il percorso Python – Parametri – Funzioni funzioni | |
[file] | Lettura/scrittura di un file di testo – gestione dei file con codifica UTF-8 – gestione dei file JSON | |
[taxes/v01] | Versione 1 dell'applicazione Esercizio: calcolo dell'imposta sul reddito . L'applicazione è disponibile in 18 versioni – La versione 1 implementa una soluzione procedurale | |
[importazioni] | Gestione delle importando i moduli – viene presentato un metodo di gestione viene presentato un metodo di gestione delle dipendenze – viene utilizzato in tutto il documento – gestione del percorso Python | |
[impots/v02] | La versione 2 dell'applicazione si basa sulla versione 1 raggruppando tutte le costanti di configurazione in un file di configurazione che gestisce il percorso Python | |
[import/v03] | La versione 3 dell'applicazione si basa sulla versione 2 utilizzando funzioni incapsulate in un modulo — la gestione delle dipendenze gestione delle dipendenze è gestita tramite configurazione — l'introduzione di un file JSON per leggere i dati necessari per il calcolo delle imposte e scrivere i risultati del calcolo | |
[classi/01] | Classi – ereditarietà – metodi e proprietà – getter/setter – costruttore – [__dict__] proprietà | |
[classi/02] | Introduzione alle classi [BaseEntity] e [MyException] utilizzate nel resto del documento – [BaseEntity] facilita le conversioni oggetto/dizionario . | |
[tre-livelli] | Architettura a livelli e programmazione basata sull'interfaccia. Questo capitolo presenta i metodi di programmazione utilizzati nel resto del documento | |
[taxes/v04] | Versione 4 dell'applicazione – questa versione implementa una soluzione con un'architettura a livelli, programmazione basata su interfacce e l'uso di classi derivate da [BaseEntity] e [MyException] | |
[databases/mysql] | Installazione del DBMS MySQL – connessione a un database – creazione di una tabella – esecuzione di SELECT, UPDATE, DELETE, e INSERT – transazioni – SQL | |
[databases/postgresql] | Installazione del DBMS PostgreSQL – connessione a un database – creazione di una tabella – esecuzione di SELECT, UPDATE, DELETE, e INSERT – transazioni – query SQL SQL | |
[databases/anydbms] | Scrivere codice indipendente dal DBMS | |
[databases/sqlalchemy] | L'ORM (Object- Mapper) di SqlAlchemy – un ORM consente un approccio unificato a lavorare con diversi sistemi di gestione di database (DBMS) – mappatura delle classi alle tabelle SQL – operazioni sulle classi che rappresentano tabelle SQL | |
[taxes/v05] | Versione 5 dell'applicazione per il calcolo delle imposte – Utilizzo dell'architettura a livelli della versione 04 e l'ORM SqlAlchemy per funzionare con i DBMS MySQL e PostgreSQL DBMS | |
[inet] | Programmazione Web – Protocollo TCP/IP (Protocollo di controllo della trasmissione / Protocollo Internet) – Protocolli HTTP (HyperText ) – SMTP (Simple Mail Transfer Protocol) – POP (Post Office Protocol) – IMAP (Internet Message Access ) | |
[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] [taxes/http-clients/01] | Versione 6 dell'applicazione Esercizio – Creazione di un servizio web JSON per il calcolo delle imposte con un' architettura multistrato – Scrittura un client web per questo server con un' architettura a più livelli – programmazione client/server – utilizzo del modulo [requests] | |
[taxes/http-servers/02] [tasse/client-http/02] | Versione 7 dell'applicazione Esercizio – La versione 6 è stata migliorata: il client e il server sono multithread – [Logger] utilità per registrare gli scambi client/server scambi client/server – [SendMail] per inviare un'e-mail all'amministratore dell'applicazione – [SendMail] per inviare | |
[taxes/http-servers/03] [tasse/client-http/03] | Versione 8 dell'applicazione Esercizio – La versione 7 è stata migliorata grazie all'uso di una sessione web | |
[xml] | Gestione del linguaggio XML (eXtended Markup Language) con il modulo [xmltodict] | |
[taxes/http-servers/04] [impots/http-clients/04] | Versione 9 dell'applicazione Esercizio – la versione 8 viene modificata per includere gli scambi client/server in XML; | |
[taxes/http-servers/05] [tasse/client-http/05] | Versione 10 dell'applicazione Esercizio – invece di elaborare N contribuenti tramite N richieste GET, viene utilizzata una singola richiesta POST viene utilizzata con i N contribuenti nel corpo della richiesta POST corpo | |
[taxes/http-servers/06] [tasse/clienti-http/06] | Versione 11 dell'applicazione Esercizio – l'architettura client/server dell'applicazione è modificata: il livello [aziendale] viene spostato dal server al client | |
[taxes/http-servers/07] | Versione 12 dell'applicazione Esercizio – questa versione implementa un server MVC (Model–View– Controller) che fornisce JSON, XML e HTML in modo intercambiabile, a seconda richiesta del client. Questo capitolo implementa le versioni JSON e XML del server | |
[impots/http-clients/07] | Implementazione dei client JSON e XML per il server MVC nella versione 12 | |
[impots/http-servers/07] | Implementazione del server HTML nella versione 12 – utilizzando il framework CSS Bootstrap – | |
[impots/http-servers/08] | Versione 13 dell'applicazione – Riscrittura del codice dalla versione 12 – gestione delle sessioni utilizzando il modulo [flask_session] e un server Redis – utilizzando password | |
[import/server-http/09] [impots/http-clients/09] | Versione 14 dell'applicazione Esercizio – Implementazione degli URL con un token CSRF (Cross-Site Request ) | |
[impots/http-servers/10] | Versione 15 dell'applicazione Esercizio – rifattorizzazione del codice dalla versione 14 per gestire due tipi di azioni: ASV (Action Show View), che vengono utilizzate solo per visualizzare una vista senza modificare lo stato del server, e ADS (Action Do Something), che eseguono un'azione che modifica lo stato del server: queste azioni terminano tutte con un reindirizzamento a un'azione ASV: ciò consente una corretta gestione dell'aggiornamento delle pagine nel browser del client | |
[impots/http-servers/11] | Versione 16 dell'applicazione – Gestione degli URL con prefissi | |
[impots/http-servers/12] | Versione 17 dell'applicazione – porting della versione 16 su un server Apache/Windows | |
[impots/http-servers/13] | Versione 18 dell'applicazione – corregge un bug presente nella versione 17 |
Le applicazioni client/server per il calcolo delle imposte hanno implementato la seguente architettura:

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

Il contenuto di questo documento è denso. I lettori che arriveranno fino alla fine acquisiranno una solida comprensione della programmazione web MVC in Python/Flask e, oltre a ciò, una solida comprensione della programmazione web MVC in altri linguaggi.
Ulteriori informazioni sul framework Flask sono disponibili nel documento [https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world] dell'autore Miguel Grinberg. Ho letto alcune sezioni del suo corso e le ho trovate molto istruttive. L'autore tratta molti concetti che non vengono affrontati in questo documento.