Questo tutorial introduttivo su Python Flask spiega cos'è Flask, l'installazione di Python, Virtualenv, l'esempio di Flask Hello World con una sezione di esempi di codice, debug e test:
Lo sviluppo di un sito web è più un'arte che un'abilità. Richiede pazienza e diligenza, oltre a perseveranza, coraggio e dedizione per creare ciò che è necessario per ottenere un vero successo. Al giorno d'oggi, è essenziale che gli studenti si mettano al passo con i tempi il prima possibile.
Abbiamo creato questo tutorial su Python Flask per consentire agli studenti di acquisire velocità e di implementare una programmazione web semplice e complessa utilizzando Python 3.
Questo tutorial su Python Flask è più che altro un tutorial per principianti, che coprirà l'installazione di Python, Virtualenv e altri pacchetti essenziali. In questa serie di tutorial, installeremo anche Flask insieme agli altri plugin Flask necessari. Abbiamo anche incluso una sezione sul debugging del codice, sui test e sull'integrazione continua usando Git Actions.
Elenco delle esercitazioni della serie Flask
Tutorial #1: Tutorial su Python Flask - Introduzione a Flask per i principianti
Tutorial #2: Modello, modulo, vista e reindirizzamento di Flask con esempi
Tutorial #3: Gestione del database di Flask - Come usare Flask con un database
Tutorial #4: Layout di app e progetti Flask con Blueprint e Bootstrap
Tutorial #5: Modelli di progettazione e migliori pratiche di Flask per le applicazioni web
Tutorial #6: Tutorial sull'API di Flask con un esempio
Tutorial #7: Django Vs Flask Vs Node: quale framework scegliere?
Tutorial #8: Le 31 domande più frequenti di Python Flask con le relative risposte
Che cos'è la fiaschetta
Flask è un framework per lo sviluppo web. È un framework con un server di sviluppo e un debugger integrati.
Il framework Flask è di per sé diverso dagli altri archetipi, in quanto consente agli sviluppatori web di essere flessibili e di adattarsi comodamente ai cambiamenti frequentemente rilasciati nella comunità di sviluppo del software.
A cosa serve il pallone
Utilizziamo il framework Flask per lo sviluppo di applicazioni web in linguaggio di programmazione Python. Si integra con altri servizi e API di terze parti per dare ricchezza e significato all'applicazione in fase di sviluppo. I concetti fondamentali di Flask sono semplici e il suo ingombro è minimo.
Iniziamo questo tutorial su Python Flask per capire lo sviluppo web con l'aiuto di un repository GitHub di Flask. Tuttavia, prima di procedere, clonate il progetto da Github per seguire facilmente gli esempi di codice discussi.
Prerequisiti
Oltre alle voci citate in questa sezione, si consiglia di creare un account Github. Procediamo con i passi indicati di seguito nei prerequisiti.
Passo 1: Installare Python
Verificate se avete installato Python 3 o meno; in caso contrario, scaricate Python 3 da qui e installatelo in base al vostro sistema operativo.
Passo 2: Creare un ambiente virtuale Python
Creare un ambiente virtuale utilizzando il comando seguente.
python3 -m venv venv
Usate il comando seguente per attivare l'ambiente virtuale Python.
sorgente venv/bin/activate
Di seguito è riportato un esempio di attivazione e disattivazione dell'ambiente virtuale.
Tutti i comandi successivi di questa esercitazione devono essere eseguiti in un ambiente virtuale attivato. Installare il pacchetto wheel, in modo da poter costruire le ruote all'interno dell'ambiente virtuale.
pip installare wheel
Passo 3: Scaricare e installare Flask
È necessario eseguire i passaggi per il download di Flask e installare Flask utilizzando i passaggi indicati di seguito.
Ora installate Flask.
pip installare flask
Alcuni di noi amano lavorare con le ultime modifiche al codice sorgente. Possiamo usare il comando seguente per installare le ultime modifiche ai sorgenti di Flask.
Creare una directory temporanea.
mkdir tmp
Ora installate Flask dal repository di Github. Dovete rimanere connessi a internet per far funzionare il comando sottostante.
pip3 installa -e [email protected]:pallets/flask.git#egg=flask
Guardate l'output della console per verificare che l'installazione sia avvenuta con successo. Ora controllate se possiamo accedere ai comandi di Flask.
flask --help
Potreste vedere alcune eccezioni sull'assenza di un'applicazione Flask, ma trascuratele perché non abbiamo creato alcuna applicazione Flask. La nostra applicazione è un'istanza di Flask, che è un wrapper del framework web Werkzeug e del motore di template Jinja.
Werkzeug
Werkzeug è un kit di strumenti WSGI. WSGI è solo una convenzione di chiamata per i server web per inoltrare richieste web alle applicazioni web scritte in linguaggio di programmazione Python.
Jinja
Il templating è una competenza essenziale per gli sviluppatori web. Jinja è un motore di templating per Python molto diffuso e ricco di funzionalità. È un linguaggio piuttosto espressivo e fornisce un robusto insieme di strumenti agli autori di template.
Passo 4: Installare MongoDB
Per installare MongoDB, seguite i passaggi indicati di seguito. Abbiamo illustrato i passaggi per installarlo in un sistema Linux basato su Debian. Se utilizzate un altro sistema operativo, accedete al link e installate secondo il sistema operativo desiderato.
Installare gnupg per importare la chiave GPG pubblica di MongoDB.
sudo apt-get install gnupg
Ora importate la chiave con il comando seguente.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc
Creare il file dell'elenco dei sorgenti secondo la propria distribuzione Linux. Noi abbiamo aggiunto l'elenco dei sorgenti secondo Debian.
echo "deb //repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main"
Eseguire il comando di aggiornamento
sudo apt-get update
Ora installate MongoDB, utilizzando il comando seguente.
sudo apt-get install -y mongodb-org
Una volta completata l'installazione, avviare MongoDB con il comando seguente.
sudo systemctl start mongod
Controllare lo stato di MongoDB, utilizzando il comando seguente.
sudo systemctl status mongod
Ora assicuratevi che mongod si avvii automaticamente al riavvio del sistema lanciando il comando riportato di seguito.
sudo systemctl enable mongod
Ora verificare se è possibile connettersi al server MongoDB utilizzando il client mongo.
mongo
Nella shell di mongo, provare a usare i comandi help e show dbs.
Creare un'applicazione Flask
Usare il comando seguente per installare flask-appbuilder e mongoengine.
pip installare flask-appbuilder pip installare mongoine pip installare flask_mongoengine
Creare un'applicazione scheletro con i valori indicati come commenti nel seguente frammento di codice.
flask fab create-app # Dare i seguenti valori nel questionario della riga di comando # Nome dell'applicazione: flaskTutorialApp # EngineType : MongoEngine
Verrà visualizzato un risultato simile a quello riportato di seguito.
Il nome della nuova applicazione: exampleApp Il tipo di motore, SQLAlchemy o MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Scaricata l'applicazione scheletro, buona codifica!
Date un'occhiata al layout del progetto e dell'applicazione. Di seguito riportiamo l'output del comando tree.
Diamo un'occhiata al file di configurazione di Flask. Si tratta di una configurazione predefinita generata come risultato dell'ultimo comando. Decommentare Cyborg come mostrato di seguito.
# Configurazione del tema per Cybord=g # Questi temi si trovano in static/appbuilder/css/themes # Possiamo crearne di nostri e usarli facilmente mettendoli nella stessa struttura di dir da sovrascrivere #APP_THEME = "bootstrap-theme.css" # bootstrap predefinito #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # tema amelia #APP_THEME = "cosmo.css" # tema cosmo APP_THEME = "cyborg.css" # cyborgtema #APP_THEME = "flatly.css" # tema flatly
Per eseguire l'applicazione scheletro, utilizzate il comando seguente sul terminale.
esecuzione della fiaschetta
Flask Hello World
Per creare il vostro primo programma nella flaskTutorialApp, aprite il file views.py nella cartella app e aggiungete il seguente codice. Cercate le dichiarazioni di importazione presenti nel file. Aggiungete queste dichiarazioni se non sono già presenti.
from flask_appbuilder import BaseView, expose from app import appbuilder class HelloWorld(BaseView): """ Questa prima vista del tutorial """ route_base = "/hello" @expose("/") def hello(self): return "Hello, World! from Software Testing Help" # alla fine del file appbuilder.add_view_no_menu(HelloWorld())
Salvate il file dopo aver aggiunto il codice sorgente di cui sopra. Andate nella cartella principale del progetto e usate il comando seguente per eseguire il server di sviluppo di Flask.
esecuzione della fiaschetta
A questo punto, navigare su //localhost:5000/hello/ per vedere l'output nel browser.
Debug
Attualmente il server di sviluppo non funziona in modalità di debug. Senza la modalità di debug, è difficile trovare gli errori nel codice sorgente dell'applicazione Flask.
La modalità di debug in Flask dà i seguenti risultati:
- La modalità Debug attiva il Ricaricamento automatico, il che significa che non è necessario riavviare il server di sviluppo dopo aver apportato modifiche al codice sorgente dell'applicazione.
- La modalità Debug attiva il debugger di Python. È possibile ispezionare i valori delle variabili durante l'Eccezione.
- La modalità di debug abilita il debug dell'applicazione Flask. Possiamo controllare i valori di varie variabili nelle sessioni di debug.
Arrestare il server di sviluppo se è già in esecuzione. È possibile utilizzare CTRL + C o l'interruzione della tastiera per fare lo stesso.
Utilizzare il codice seguente per abilitare la modalità di debug ed eseguire temporaneamente il server di sviluppo.
FLASK_ENV=esecuzione flask di sviluppo
Cercare nella console il PIN del debugger e annotarlo.
Ora modifichiamo la vista HelloWorld scritta sopra con le seguenti righe del frammento di codice. Notate che abbiamo introdotto un'eccezione personalizzata.
@expose("/") def hello(self): raise Exception("Un'eccezione personalizzata per imparare la modalità DEBUG") return "Hello, World! from Software Testing Help"
Se si accede a //localhost:5000/hello/, si noterà che l'applicazione ha sollevato un'eccezione. Il browser visualizza lo stack trace, come mostrato di seguito.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Inoltre, si osservi la console in cui è in esecuzione il server di sviluppo. Si noterà che questa volta le modifiche apportate a views.py vengono rilevate automaticamente e il server di debug si riavvia da solo. Ora non è necessario riavviarlo manualmente.
La console presenterà delle righe, come mostrato di seguito. È necessario annotare il PIN di debug per poterlo utilizzare in seguito.
* Rilevata modifica in '/work/sth/flaskTutorialApp/app/views.py', in ricarica 2020-06-02 14:59:49,354:INFO:werkzeug: * Rilevata modifica in '/work/sth/flaskTutorialApp/app/views.py', in ricarica * Riavvio con stat 2020-06-02 14:59:49,592:INFO:werkzeug: * Riavvio con stat * Debugger attivo! * PIN debugger: 150-849-897
Ora controllate la traccia dello stack nel browser e andate all'ultima riga. Fate clic su di essa per espandere la vista e fate clic sull'icona CLI per aprire la shell in modalità interattiva.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Una volta aperto, il browser visualizzerà una richiesta di PIN di debug. Immettere il PIN di debug e fare clic su OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Una volta che si procede dopo aver dato il PIN di debug, si può accedere alla shell interattiva.
Accediamo alla shell dal browser e possiamo ispezionare i valori delle variabili per trovare la causa dell'eccezione e gestire l'errore in modo migliore. Osservate uno degli esempi mostrati nell'immagine seguente.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Ora modificate il codice in view.py, come mostrato di seguito. Notate che abbiamo commentato la riga che presentava l'eccezione.
@expose("/") def hello(self): # raise Exception("Un'eccezione personalizzata per imparare la modalità DEBUG") return "Hello, World! da Software Testing Help"
Testare l'applicazione Flask
Ora scriviamo il nostro primo test per l'applicazione Flask che stiamo sviluppando. Innanzitutto, installiamo PyTest. PyTest è un framework di test che ci aiuta a scrivere codice migliore.
Inoltre, proprio perché possiamo scrivere test unitari durante lo sviluppo delle nostre applicazioni, è possibile seguire l'approccio TDD, acronimo di Test-Driven Development (sviluppo guidato dai test). Nei prossimi tutorial di questa serie, scriveremo sempre prima i test e poi svilupperemo le viste o i modelli.
Installare PyTest
pip installare pytest
Ora creiamo una cartella chiamata tests all'interno della cartella dell'applicazione e in essa creiamo un file chiamato test_hello.py. Scriviamo il nostro primo test unitario per testare la nostra vista.
Copiate il seguente frammento di codice e incollatelo in test_hello.py.
#!/usr/bin/env python from app import appbuilder import pytest @pytest.fixture def client(): """ Una fixture pytest per il client di test """ appbuilder.app.config["TESTING"] = True with appbuilder.app.test_client() as client: yield client def test_hello(client): """ Un metodo di test per verificare la vista hello """ resp = client.get("/hello", follow_redirects=True) assert 200 == resp.status_code
Per eseguire i test, utilizzare il seguente comando pytest. PyTest raccoglie automaticamente i test e visualizza i risultati sullo standard output.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Creare un flusso di lavoro GitHub
Utilizziamo Git Actions per creare un flusso di lavoro CI/CD per la nostra applicazione di esempio. Seguite i passaggi indicati di seguito per il vostro progetto.
Passo 1: accedere alla pagina del repository su GitHub e fare clic su Azioni Git.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Fase 2: Scorrere la pagina e trovare un modello di flusso di lavoro esistente per un pacchetto Python.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Fase 3: Impostazione del pacchetto Python Flusso di lavoro.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Fase 4: Una volta aperta la configurazione del flusso di lavoro python-package.yml, aggiornarla in base ai valori dei tag aggiuntivi yaml forniti.
nome: flaskTutorialApp jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: [3.7, 3.8] mongodb-version: [4.2] steps: - name: Start MongoDB uses: supercharge/[email protected] with: mongodb-version: ${{ matrix.mongodb-version }} # other values
Vogliamo testare la nostra applicazione Flask sull'ultima distribuzione Linux Ubuntu. Oltre al sistema operativo, vogliamo eseguire i nostri test solo utilizzando Python 3.7 e Python 3.8.
Passo 5: fare il commit del file python-package.yml con i valori aggiornati.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Fase 6: Il commit nella pagina precedente ci porta ai lavori di GitActions.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Passo 7: [Opzionale]
Nella pagina Github Jobs dell'applicazione di esempio, possiamo creare un badge e posizionarlo sul file README.md per visualizzare lo stato di compilazione.
Ora, ogni volta che le modifiche vengono apportate al ramo master, il flusso di lavoro Git, come scritto in python-package.yml, verrà seguito ed eseguito su Git Actions.
Conclusione
In questo tutorial abbiamo trattato tutti i concetti di base, dai prerequisiti all'impostazione del flusso di lavoro CI/CD per un'applicazione web sviluppata con Flask, un framework di sviluppo web basato su Python.
Questo tutorial copre tutti i passi necessari, come l'installazione di Python, il download di & l'installazione di Flask, il lavoro con Flask-Appbuilder, i test con PyTest, ecc. per iniziare lo sviluppo web con Python. La comunità degli sviluppatori web di solito confronta Flask con un altro popolare framework di sviluppo web in Python chiamato Django.
Spiegheremo queste differenze e confronteremo questi framework in uno dei tutorial di questa serie.