Introduzione
- Questo articolo ti guida attraverso la validazione dei dati con pydantic, una libreria Python il cui core di validazione (
pydantic-core) è scritto in Rust. Gli esempi usano pydantic v2. - Prima di iniziare, assicurati di avere Python e la libreria pydantic installati nel tuo ambiente. Controlla il comando di installazione di pydantic qui sotto.
Creare un modello
- Per prima cosa, dovremo importare e far ereditare la nostra classe da
pydantic.BaseModelper iniziare a validare. Nel nostro esempio creeremo una classe chiamataPersonche avrà un nome, un’età e un’e-mail.
- Con questa classe, quando la istanziamo, pydantic verifica che
nameedemailsiano stringhe e cheagesia un intero.
Usare il modello
- Ora che l’abbiamo creata, istanzieremo la classe. Creeremo un dict contenente i dati e lo spacchetteremo nella nostra classe.
- L’esempio qui sopra non solleva alcun errore perché tutti i campi sono del tipo corretto. Per impostazione predefinita, pydantic converte anche i valori compatibili: se
ageè la stringa"19", diventa l’intero19. Ora invieremo dei dati errati per verificare che la nostra validazione funzioni.
- L’esempio qui sopra solleva un
ValidationErrorperchéagedeve essere un intero e"nineteen"non può essere convertito in un intero:
- Per gestire l’errore invece di lasciare che fermi il tuo programma, catturalo con
try/except. Il suo metodoerrors()elenca ogni campo non valido:
Strict mode
- Se vuoi rifiutare anche stringhe come
"19", abilita la strict mode nel modello. In questo modoageaccetta solo un veroint, ePerson(name="John", age="19", email="john@example.com")sollevaValidationError.
Creare una dataclass
- Puoi anche creare delle dataclass con pydantic. Sono simili alle dataclass standard di Python, ma validano i loro campi come
BaseModel.
- Se inviamo la stringa
"19"adage, verrà convertita nell’int19.
Pydantic supporta la validazione ricorsiva, il che significa che quando valida modelli annidati, valida anche i
modelli interni.Se una classe ha una lista di
Person, people: list[Person], pydantic controlla ogni elemento della lista e lo converte in un Person.Extra
- Pydantic ha alcuni extra, come la validazione delle e-mail e un pacchetto timezone di fallback. Per installarli, esegui i seguenti comandi:
- Puoi installarli entrambi insieme eseguendo il seguente comando.
pydantic[email]aggiunge il tipoEmailStr, che valida il formatouser@domain.tlde normalizza l’indirizzo.
Validare le variabili d’ambiente all’avvio
- Bot e API leggono token e impostazioni dalle variabili d’ambiente. Con
pydantic-settings, una variabile mancante o non valida ferma l’applicazione all’avvio con un errore chiaro, invece di farla fallire più tardi nel mezzo di una richiesta.
- Dichiara le variabili di cui ha bisogno la tua applicazione in una classe che eredita da
BaseSettings. Ogni campo legge la variabile d’ambiente con lo stesso nome, senza distinguere maiuscole e minuscole:discord_tokenleggeDISCORD_TOKEN.
settings.py
- Se
DISCORD_TOKENnon è impostata,Settings()solleva unValidationErrorperdiscord_tokencon il messaggioField required. Un valore comePORT=abcfallisce allo stesso modo, perchéportdeve essere un intero. SecretStrnasconde il token quando stampi o registri nei log le impostazioni. Leggi il valore reale consettings.discord_token.get_secret_value().- Su Square Cloud, imposta le variabili dalla dashboard o con
squarecloud app env set, ed elencapydantic-settingsnel tuorequirements.txt. Consulta Variabili d’ambiente.
Prossimi passi
Variabili d'ambiente
Imposta le variabili che legge la tua classe di impostazioni.
FastAPI
Fai il deploy di un’API che valida le richieste con pydantic.
Bot Discord
Ospita un bot che legge il suo token dall’ambiente.
Ti è piaciuto questo articolo?
- Abbiamo creato questo contenuto con grande cura per offrirti il miglior aiuto possibile. Gli sviluppatori hanno già valutato Square Cloud 4,9/5 su 402 recensioni su Google e Trustpilot: lascia anche tu la tua! Ci aiuta a capire cosa conta di più per te.
Google Reviews
Lascia la tua recensione su Google Reviews.
Trustpilot
Lascia la tua recensione su Trustpilot.

