Realizzare un sito web, specialmente se si è alle prime armi con la programmazione, richiede sempre una buona conoscenza dei linguaggi utilizzati e delle metodologie di sviluppo che collegano il mondo lato client e il mondo lato server. Se hai già sviluppato web application in passato, ad esempio con PHP, avrai senz’altro notato che hai bisogno di un server web e di un server di database esterni all’applicazione da realizzare. Cioè, parliamo di applicazioni di terze parti che vanno installate e gestite separatamente.
Nel caso in cui decidessi di realizzare un sito web con Python e Flask sappi che, sia il server web che il server di database sono applicativi già inclusi nell’applicazione web che stai per realizzare e non necessitano di configurazione o gestione esterna.
Chi approccia a Python per la prima volta ha l’impressione che sia solo un linguaggio di scripting per l’esecuzione di procedure da provare al volo. In realtà Python è un linguaggio che si presta molto bene per una innumerevole tipologia di applicazioni, tra cui, la realizzazione di siti web.
1. Perchè realizzare un sito web con Python e Flask
Realizzare un sito web con Python è molto semplice grazie all’utilizzo di framework studiati ad hoc, tra questi framework rivestono grande importanza Django e Flask. Entrambi i framework, rendono Python, un linguaggio appetibile nel mondo dello sviluppo web professionale e nella realizzazione di software gestionale opensource, essendo questi framework gratuiti e di libero utilizzo.
Per realizzare un sito web con Python, ho deciso di utilizzare la libreria Flask. Questo perché a differenza di Django, Flask, è un framework che supporta le API ed ha la possibilità di interagire con una vasta gamma di database. Basti pensare che attualmente è utilizzato da aziende del calibro di Netflix, inoltre, social web come reddit sono scritti e gestiti interamente in Flask.
Tramite Flask è possibile creare interi siti web utilizzando solo ed esclusivamente codice Python senza l’ausilio di server web e complessi sistemi di gestione dati come MySQL e SQL Server. Infatti, Flask, incorpora un potente server web e un motore di database, molto utilizzato sia per applicazioni mobile che per web application di piccole e medie dimensioni. Il database utilizzato è SQLite, anch’esso serverless, in poca sostanza, un’applicazione web scritta con Python e Flask ha il server web e il server di database SQLite che fanno parte dell’applicazione stessa.
Ora vedrai, passo-passo, come realizzare un sito web con Python e Flask. Per realizzare questo sito web avrai bisogno solo della connessione ad internet e di un editor di testo. Come sempre, ti consiglio Visual Studio Code.
LEGGI ANCHE: Come installare Visual Studio Code, l’editor della Microsoft più utilizzato al mondo.
2. Installare il modulo Flask
Come ho anticipato precedentemente Flask è un framework web per Python. Inoltre, è una libreria che fornisce un insieme di classi e funzioni progettate appositamente per realizzare siti web in brevissimo tempo.
Come ogni modulo e libreria per Python è necessario installare l’intera libreria attraverso il comando pip3, da eseguire all’intero della console dei comandi, per ambiente Windows, o del terminale, per sistemi operativi Linux o MacOS. Quindi, apri il terminale e digita il comando pip3 install flask
Dopo pochi istanti l’installazione del modulo Flask verrà completata. Da questo momento in poi possiamo importare Flask in ogni script Python e mettere in moto l’intero framework per realizzare siti web interattivi.
3. Crea il tuo primo sito web con Python e Flask
Per creare il tuo primo sito web con Python e Flask è necessario creare una cartella dove il tuo progetto web prenderà vita. Quindi, come primo step crea una cartella sul desktop, chiamala flask-app ma considera che tu puoi dare un nome di tua fantasia.
Ora, apri Visual Studio Code, o se preferisci un altro editor di testo, e crea un file di nome app.py. Perché app.py? Beh il file app.py è il file che per default Flask cerca all’interno della cartella del progetto web e che è considerato il punto di partenza per l’intero sito web. Non so se hai mai sentito parlare di controller e di applicazioni MVC, ecco, app.py è il tuo controller.
Adesso, digita all’interno del file, app.py, queste istruzioni in puro codice Python:
Dal codice puoi notare alcune istruzioni molto interessanti. La prima riga di codice ti consente di importare la classe flask dalla libreria omonima. La seconda riga di codice istanzia l’oggetto Flask che governerà l’intero ciclo di vita della tua web application.
Le cose iniziano ad essere più interessanti dalla terza riga in avanti, e cioè, dalla riga @app.route(‘/’). Questa riga inserita prima di una funzione, in questo caso la function index(), definisce la rotta di default, che quando intercettata, invocherà index() ed elaborerà le istruzioni dichiarate al suo interno, cioè, return ‘Hello World…!’.
4. Avvia il server Flask ed esegui lo script Python
A questo punto puoi già provare se il tuo primo sito web scritto in Python e Flask funziona. Quindi, apri il tuo terminale e raggiungi il percorso, della cartella flask-app, che contiene l’intero progetto web. A questo punto non devi fare altro che avviare il server web digitando il comando flask run.
Ok, il server web Flask è avviato correttamente. Come per incanto, Flask, ti restituisce anche l’URL relativo al tuo progetto web. Quindi, digita l’indirizzo fornito dal comando flask run, evidenziato di rosso in figura e che identifica la rotta di default, all’interno della barra degli indirizzi del tuo browser web preferito. Premi il tasto INVIO è vedrai l’elaborazione della function index() visualizzata nella finestra attiva del browser.
LEGGI ANCHE: Stampare da Android su una stampante collegata al computer di casa.
5. Richiamare file html con Flask ed eseguire codice Python
Ora, supponiamo che tu volessi richiamare un file html, magari scaricato dai tanti siti web che consentono il download gratuito di file già pronti per essere inseriti all’interno del tuo progetto web. Insomma, il classico template HTML.
A questo punto vediamo come procedere. Innanzitutto, crea all’interno della cartella flask-app una cartella con il nome predefinito templates. Templates è la cartella che per default Flask cerca per caricare e renderizzare i tuoi template HTML. Quindi, all’interno della cartella templates tu creerai le tue pagine HTML, le viste, che richiamerai dalle function contenute all’interno del file app.py. Per convenzione ti consiglio di rinominare il template HTML con lo stesso nome della function che lo richiamerà.
Essendo index(), il nome della function che richiamerà il tuo primo template HTML, creerai il file index.html, all’interno della cartella templates, con questo contenuto:
Ora, per richiamare un template dal controller, cioè, dal file app.py, devi modificare il contenuto del file app.py in questo modo:
Nota che, alla clausola import è stata aggiunta l’importazione della funzione render_template e che, il comando return, ora ritornerà il contenuto della pagina index.html tramite l’invocazione della funzione render_template. Riaggiorna la pagina web e noterai che non è cambiato nulla a livello di visualizzazione ma ora, flask ha visualizzato il messaggio Hello World..!, richiamando una pagina html, cioè, una vista.
6. Passaggio di dati al file html da uno script in Python
Flask, come altri web framework, è utilizzato per creare pagine web interattive, cioè, pagine il cui contenuto cambia sulla base di informazioni contenute in oggetti o variabili Python.
Non è raro trovarsi nella condizione di creare una funzione del controller app.py che passi interi oggetti al suo template. Quindi, è necessario modificare l’istruzione return della funzione index e aggiungere gli oggetti o le variabili da passare al template come parametri aggiuntivi della funzione render_template:
Anche qui puoi notare che le due variabili stringa, nome e cognome, vengono passate alla funzione render_template che le inoltrerà al template. Dopo aver modificato opportunamente il controller app.py è necessario apportare anche delle modifiche al template, e cioè, al file index.html. Quindi, modifica il file index.html, contenuto all’interno della cartella templates, in questo modo:
Come accennato precedentemente anche index.html è stato modificato, questa volta però, vediamo la comparsa delle doppie parentesi graffe. Questo perchè tutte le variabili passate dal controller al template per essere interpretate all’interno di index.html devono essere obbligatoriamente racchiuse tra doppie parentesi graffe. Dopo le modifiche dei file interessati aggiorna la pagina web visualizzata dal browser che visualizzerà questa schermata:
Il browser visualizzerà il saluto ma questa volta parte dei dati sono stati passati al template dal controller.
7. Gestione di un database con Flask in Python
Come in tutti i siti web a volte è richiesto l’accesso ad un database per leggere e memorizzare dati in tabelle contenute in un database SQL. Questa volta però, non è necessario scaricare e installare database relazionali come MySQL e SQL Server. Il database gestito per default da Flask è SQLite. Per utilizzare SQLite, in un progetto web, è necessario solo importare la libreria SQLite nel controller app.py.
Anche se il tuo motore di database relazionale, SQLite, è subito pronto all’uso devi prima creare un database e almeno una tabella per poterlo gestire successivamente da Flask. Per questo motivo, devi creare uno script contenente tutte le istruzioni SQL di generazione del database e di una tabella. Per gli scopi di questa guida chiameremo il database, database.db, e la tabella la chiameremo, anagrafica. Pertanto crea il file crea_db.sql, nella stessa posizione del file app.py, e inserisci le istruzioni SQL di seguito riportate.
Come puoi notare all’interno di questo file sono state inserite istruzioni in puro codice SQL, nulla a che fare con Python. Queste istruzioni verranno eseguite da SQLite tramite uno script Python opportunamente progettato. Quindi, crea un altro file, sempre nella stessa posizione del file crea_db.sql e rinominalo in init_db.py in questo modo:
Lo script init_db.py, creerà il database e eseguirà le istruzioni SQL contenute nel file crea_db.sql. Ora, non ti rimane che eseguire lo script init_db.py, da terminale, con questo comando: python3 init_db.py
Terminata l’esecuzione dello script init_db.py noterai la presenza del file database.db all’interno della cartella flask-app. Ora, per leggere i nominativi dal database devi modificare il controller, e cioè il file app.py, in questo modo:
Anche se sei all’inizio con la programmazione, non farai molta fatica ad interpretare il codice presente all’interno del controller app.py. Infatti, potrai individuare i comandi Python per la creazione del database, database.db, e il comando di invocazione della query SQL, “select * from anagrafica“, che ritornerà tutti e tre i record inseriti in fase di inizializzazione del database e della tabella anagrafica con lo script init_db.py. Ogni volta che apporterai una modifica al database aggiornerai sia il file crea_db.sql sia il file init_db.py ed eseguirai, sempre da terminale, lo script init_db.py.
Oltre al controller per visualizzare il contenuto della tabella anagrafica presente all’interno del database, database.db, devi modificare anche il template, e cioè il file index.html, in questo modo:
Raggiorna la finestra del browser e il contenuto dinamico verrà visualizzato:
Come hai potuto notare con pochissime istruzioni Python e grazie a Flask è possibile realizzare siti web in brevissimo tempo. L’esempio proposto in questa guida mostra solo una piccola parte di quelle che sono le potenzialità di Flask. Flask è un framework molto potente che puoi approfondire consultando questa guida. Se vuoi conoscere Django, un altro web framework per Python, molto potente e gratuito, puoi seguire questo breve video tutorial dove avrai modo di apprendere le tecniche utilizzate dai professionisti dello sviluppo web.