Guida completa a Python
📘 Capitolo 12 – Programmazione Web in Python (con Flask)
1. Cos’è Flask?
Flask è un micro-framework web per Python. È:
- Leggero e facile da usare
- Perfetto per progetti piccoli e medi
- Ottimo per imparare come funzionano web server e API
Con Flask puoi creare un server web in poche righe.
2. Installazione
Apri il terminale e installa Flask:
pip install flask
3. Primo esempio: Hello, Web!
Crea un file chiamato app.py
con questo contenuto:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
return "🚀 Benvenuto nella tua prima app Flask!"
if __name__ == "__main__":
app.run(debug=True)
▶️ Come eseguire:
Nel terminale:
python app.py
Vai su http://127.0.0.1:5000 nel tuo browser
Risultato: "🚀 Benvenuto nella tua prima app Flask!"
4. Aggiungere più pagine (routing)
@app.route("/contatti")
def contatti():
return "📧 Contattaci a info@example.com"
Naviga su http://127.0.0.1:5000/contatti
5. Passare parametri via URL
@app.route("/ciao/<nome>")
def saluta(nome):
return f"Ciao, {nome.capitalize()}!"
URL: http://127.0.0.1:5000/ciao/luca
Output: Ciao, Luca!
6. HTML dinamico con render_template()
Struttura cartelle:
arduino
app.py
templates/
home.html
home.html
<!DOCTYPE html>
<html>
<head><title>Home</title></head>
<body>
<h1>Benvenuto, {{ nome }}!</h1>
</body>
</html>
app.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def home():
return render_template("home.html", nome="Luca")
🔹 7. Moduli utili con Flask
Modulo | A cosa serve |
---|---|
render_template() | per HTML dinamico |
request | per leggere input da form/URL |
redirect , url_for | per navigazione e reindirizzamenti |
8. Creare una mini API
from flask import jsonify
@app.route("/api/saluto/<nome>")
def api_saluto(nome):
return jsonify({"messaggio": f"Ciao, {nome}!"})
Naviga su: http://localhost:5000/api/saluto/Mario
Output JSON:
jsonCopiaModifica{
"messaggio": "Ciao, Mario!"
}
Riepilogo
Con Flask puoi:
- Creare siti web semplici e dinamici
- Creare API REST per app frontend, mobile, ecc.
- Lavorare facilmente con HTML, JSON, form, routing…
🧪 Esercizio pratico
- Crea una route
/quadrato/<numero>
- Il server calcola e restituisce
numero * numero
- Mostra il risultato come JSON (es:
{ "quadrato": 16 }
)
Soluzione in Flask
📄 app.py
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/quadrato/<int:numero>")
def quadrato(numero):
risultato = numero ** 2
return jsonify({"quadrato": risultato})
if __name__ == "__main__":
app.run(debug=True)
▶️ Come usarlo:
Avvia l’app: bash
python app.py
Apri il browser e vai su:
http://127.0.0.1:5000/quadrato/4
➝ jsonCopiaModifica{"quadrato": 16}
http://127.0.0.1:5000/quadrato/9
➝ jsonCopiaModifica{"quadrato": 81}
Cosa hai imparato:
- Come creare una route con parametri dinamici
- Come lavorare con i tipi (es:
<int:numero>
) - Come usare
jsonify()
per risposte API-style
🧪 Esercizio pratico (parte 2)
Aggiungiamo un form HTML alla nostra app Flask per inserire un numero da browser e vedere il quadrato calcolato dinamicamente.
Struttura del progetto
CopiaModificaapp.py
templates/
│
└── quadrato.html
Step 1 – app.py
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route("/", methods=["GET", "POST"])
def quadrato():
risultato = None
if request.method == "POST":
try:
numero = int(request.form["numero"])
risultato = numero ** 2
except ValueError:
risultato = "Errore: inserisci un numero valido."
return render_template("quadrato.html", risultato=risultato)
if __name__ == "__main__":
app.run(debug=True)
Step 2 – templates/quadrato.html
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>Calcolo Quadrato</title>
</head>
<body>
<h1>🧮 Calcolo del quadrato di un numero</h1>
<form method="POST">
<label for="numero">Inserisci un numero:</label>
<input type="text" id="numero" name="numero" required>
<button type="submit">Calcola</button>
</form>
{% if risultato is not none %}
<h2>📐 Risultato: {{ risultato }}</h2>
{% endif %}
</body>
</html>
▶️ Come testarlo
- Crea la cartella
templates/
accanto aapp.py
- Salva lì dentro il file
quadrato.html
- Avvia Flask:
python app.py
Vai su http://127.0.0.1:5000/
Cosa hai imparato:
- Come usare un form HTML con Flask
- Come gestire richieste POST
- Come passare dati dinamici a un template
- Come mostrare risultati nella stessa pagina