Raccolta di applicazioni web sviluppate con Python e Flask. Progettazione progressiva dallo sviluppo base alla struttura completa con autenticazione, ORM e gestione sessioni.
Applicazione web Flask completa per un negozio di servizi benessere con autenticazione utenti, market con carrello e gestione budget.
Funzionalità:
- Registrazione e login utenti con validazione form e messaggi di errore
- Password cifrate con bcrypt tramite property setter automatico
- Market dei servizi con aggiunta e rimozione dal carrello
- Controllo budget prima dell'acquisto (
can_purchase()) - Route protette con
@login_required— redirect automatico al login - Feedback utente con
flash()categorizzato (success / danger / info) - Generazione database con dati di esempio al primo avvio Architettura:
| File | Responsabilità |
|---|---|
__init__.py |
Application factory — Flask, SQLAlchemy, Bcrypt, LoginManager |
models.py |
Modelli ORM — Prodotto, Utente, Acquisto con relazioni |
routes.py |
Routing — home, market, login, register, logout |
forms.py |
Form WTForms con validatori custom su username ed email |
run.py |
Entry point — avvio applicazione |
db_gen.py |
Generazione database con seed data iniziali |
Modelli e relazioni:
Utente ──< Acquisto >── Prodotto
(carrello)
Stack:
**Avvio:**pip install flask flask-sqlalchemy flask-bcrypt flask-login flask-wtf
python "Sito Flask16/db_gen.py" # genera il database con i dati di esempio
python "Sito Flask16/run.py" # avvia l'applicazione su http://localhost:5000Versione base dell'applicazione — routing Flask essenziale con visualizzazione prodotti da database SQLite. Nessuna autenticazione.
Documenta la progressione dal prototipo alla struttura completa della v2.
Stack: Python · Flask · SQLAlchemy · SQLite
Avvio:
python "Sito Flask15/negozio.py"Applicazione web Flask per la gestione di attività con persistenza su database.
Documentazione in aggiornamento.
Flask-dashboard/
├── Sito Flask15/ # v1 — prototipo base senza autenticazione
│ ├── negozio.py # App monolitica con routing e modello
│ └── database.py # Generazione database e seed data
├── Sito Flask16/ # v2 — app completa con autenticazione e carrello
│ ├── negozio/
│ │ ├── __init__.py # Application factory
│ │ ├── models.py # ORM — Prodotto, Utente, Acquisto
│ │ ├── routes.py # Routing completo
│ │ └── forms.py # Form con validazione WTForms
│ ├── run.py # Entry point
│ └── db_gen.py # Seed database
├── Tudolist/ # App todo list web
├── Templates/ # Template HTML condivisi
└── esercizi/ # Esercizi Flask progressivi (progetto01-11)
pip install flask flask-sqlalchemy flask-bcrypt flask-login flask-wtfGenera requirements.txt con:
pip freeze > requirements.txt- Le password vengono cifrate automaticamente tramite property setter bcrypt —
l'assegnazione
utente.password = "testo"cripta senza chiamate esplicite - Il carrello è implementato come tabella di associazione
Acquistocon three-table join SQLAlchemy per filtrare i prodotti dell'utente corrente - La registrazione usa
db.session.flush()per intercettare errori di unicità prima del commit definitivo SECRET_KEYnel codice — in produzione va spostato in variabile d'ambiente.env