Vai al contenuto principale
Questa guida tratta la validazione dei dati con pydantic, una libreria Python il cui core di validazione (pydantic-core) è scritto in Rust. Gli esempi usano pydantic v2. Ti servono Python e la libreria pydantic:

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().

Eseguirlo su Square Cloud

Elenca pydantic e i suoi extra nel tuo requirements.txt, così Square Cloud li installa durante il deploy:
requirements.txt
Crea un file squarecloud.app nella radice del tuo progetto. Per un bot il cui file principale è main.py e che importa settings da settings.py:
squarecloud.app
Il tuo ZIP contiene i tuoi file .py, requirements.txt e squarecloud.app, senza il token. Imposta DISCORD_TOKEN e le altre variabili dalla dashboard o con squarecloud app env set: consulta Variabili d’ambiente. Se manca una variabile obbligatoria, il ValidationError compare nei log dell’applicazione non appena si avvia.

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.