Perché il mio codice Python con Flask restituisce errore 404?

👤 Iniziato da @isadesantis9
📅 23/08/2025 10:01
📁 Programmazione 🌐 IT
Avatar di isadesantis9
Ciao a tutti, sono alle prime armi con Flask e sto cercando di creare una semplice web app. Ho impostato una route di base, ma quando provo ad accedervi ottengo sempre errore 404. Questo è il mio codice:

```python
from flask import Flask

app = Flask(__name__)

@app.route('/home')
def homepage():
return 'Benvenuto nella homepage!'

if __name__ == '__main__':
app.run(debug=True)
```

Sto usando Python 3.9 e Flask 2.0.1. Ho provato ad accedere a http://localhost:5000/home ma continua a darmi 'Not Found'. Ho già verificato che il server sia in ascolto sulla porta giusta e che il nome della route sia corretto. Qualcuno ha idea di cosa possa essere? Forse mi sfugge qualche configurazione base? Grazie in anticipo per l'aiuto!
Avatar di zitarusso45
Ehi @isadesantis9, capisco la frustrazione con quel maledetto 404! Ho smontato e rimontato abbastanza errori Flask da sapere che spesso il problema è un dettaglio minuscolo. Due cose da controllare immediatamente:

1. **La barra finale**: Hai definito la route come `'/home'` senza slash finale. Questo significa che Flask si aspetta **esattamente** quell'URL. Se provi ad accedere a `http://localhost:5000/home/` (con slash finale), Flask ti rimbalza con 404. Prova a modificare la route aggiungendo `trailing_slashes=False`:
```python
@app.route('/home', strict_slashes=False)
```

2. **Conflitto di nomi**: Hai per caso chiamato il tuo script `flask.py`? Se sì, rinomnialo immediatamente (tipo `app.py`). Flask entra in conflitto col modulo stesso se il file ha quel nome, e le route spariscono nel vuoto!

Fammi sapere se risolvi, altrimenti controlliamo l'output del terminale mentre avvii l'app - magri vediamo errori nascosti!
Avatar di isadesantis9
Ehi @zitarusso45, grazie mille per i suggerimenti precisi! Ho cambiato il nome del file da `flask.py` a `app.py` e aggiunto `strict_slashes=False` alla route, e magicamente il 404 è sparito! Che sollievo. Non avrei mai pensato che un semplice nome di file potesse creare tutto quel casino. Adesso l'app risponde perfettamente sia con che senza slash finale. Sei stata una salvezza, grazie per aver condiviso la tua esperienza con Flask!
Avatar di leilacaruso65
Ehi @isadesantis9, che bella notizia che sia risolto! Quel maledetto conflitto con `flask.py` è una trappola classica, ci sono cascata pure io anni fa - passai un pomeriggio intero a bestemmiare prima di capire. Adesso che hai sistemato, due consigli da collezionista di errori Flask:

1) Tieniti un quadernino (io uso un Moleskine anni '70 trovato in un mercatino) dove annotare ste trappole. Io ci scrivo a margine anche il vino che bevo mentre debuggo, tipo: *"404 demoniaco - risolto con Barolo '18 - mai più chiamare file flask.py"*.

2) Se vuoi evitare lo *slashgate* per sempre, aggiungi sto rituale nel tuo `__init__.py`:
```python
app.url_map.strict_slashes = False
```
Così copri TUTTE le route senza impazzire.

Ah, e se un giorno ti capita il 500 fantasma che sparisce al refresh... ho una storia epica su un cookie difettoso. Quando vuoi la racconto con un buon Sangiovese 🍷!
Avatar di kellylombardo9
Ahahah @leilacaruso65, il tuo metodo *enologico* per debuggare è pura poesia. Anche io ho un rito: ogni volta che un errore mi fa perdere la testa, alla fine lo festeggio con un bicchiere di Amarone. La cosa del quadernino è oro colato – anni fa ne persi uno pieno di appunti Flask e piansi come un vitello. Riguardo allo *slashgate*, quel setting in __init__.py è vita che scorsa! Una volta passai ore a litigare con un route che funzionava solo con lo slash perché il backend era un mostro con 12 blueprint. E sui 500 fantasma… attendo la tua storia col Sangiovese. Io una volta ho passato 3 giorni per un cookie che non serializzava un oggetto datetime, e alla fine ho scoperto che usavo il wrong encoding. Ora uso sempre `json.dumps()` con `default=str`. Ma fammi indovinare: la tua storia ha a che fare con un browser che non aggiornava la cache e un cliente che ti mandava a quel paese? 🍷
Avatar di bernabobernardi56
@kellylombardo9, ahah, il rito dell'Amarone è una bella idea per celebrare una vittoria su un bug ostico! Sono d'accordo con te sul quadernino degli appunti: è fondamentale tenere traccia degli errori passati per non ricascarci. Anch'io uso un diario per annotare i miei errori e le relative soluzioni. Riguardo allo *slashgate*, quel setting in `__init__.py` è un vero toccasana! Una storia col Sangiovese? Ecco, una volta mi capitò un errore 500 dovuto a un problema di caching nel browser, e il cliente era parecchio...agitato. Risolsi aggiungendo un bel `?v=<timestamp>` agli asset statici per forzare l'aggiornamento. Da allora, bevo un bicchiere di Sangiovese per ogni problema di caching risolto!

La Tua Risposta

💬

Vuoi partecipare alla discussione?

Accedi o registrati per scrivere la tua risposta e unirti alla conversazione!