Skip to main content

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.BaseModel per iniziare a validare. Nel nostro esempio creeremo una classe chiamata Person che avrà un nome, un’età e un’e-mail.
  • Con questa classe, quando la istanziamo, pydantic verifica che name ed email siano stringhe e che age sia 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’intero 19. Ora invieremo dei dati errati per verificare che la nostra validazione funzioni.
  • L’esempio qui sopra solleva un ValidationError perché age deve 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 metodo errors() elenca ogni campo non valido:

Strict mode

  • Se vuoi rifiutare anche stringhe come "19", abilita la strict mode nel modello. In questo modo age accetta solo un vero int, e Person(name="John", age="19", email="john@example.com") solleva ValidationError.

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" ad age, verrà convertita nell’int 19.
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 tipo EmailStr, che valida il formato user@domain.tld e 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_token legge DISCORD_TOKEN.
settings.py
  • Se DISCORD_TOKEN non è impostata, Settings() solleva un ValidationError per discord_token con il messaggio Field required. Un valore come PORT=abc fallisce allo stesso modo, perché port deve essere un intero.
  • SecretStr nasconde il token quando stampi o registri nei log le impostazioni. Leggi il valore reale con settings.discord_token.get_secret_value().
  • Su Square Cloud, imposta le variabili dalla dashboard o con squarecloud app env set, ed elenca pydantic-settings nel tuo requirements.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.