Zum Hauptinhalt springen
Diese Anleitung behandelt die Datenvalidierung mit Pydantic, einer Python-Bibliothek, deren Validierungskern (pydantic-core) in Rust geschrieben ist. Die Beispiele verwenden Pydantic v2. Du brauchst Python und die Pydantic-Bibliothek:

Ein Modell erstellen

  • Zuerst müssen wir es importieren und unsere Klasse von pydantic.BaseModel erben lassen, um mit der Validierung zu beginnen. In unserem Beispiel erstellen wir eine Klasse namens Person, die einen Namen, ein Alter und eine E-Mail-Adresse hat.
  • Wenn wir diese Klasse instanziieren, validiert Pydantic, dass name und email Strings sind und age eine Ganzzahl ist.

Das Modell verwenden

  • Nachdem wir es nun erstellt haben, instanziieren wir die Klasse. Wir erstellen ein Dict mit den Daten und entpacken es in unsere Klasse.
  • Das obige Beispiel löst keinen Fehler aus, da alle Felder den korrekten Typ haben. Standardmäßig wandelt Pydantic außerdem kompatible Werte um: Ist age der String "19", wird daraus die Ganzzahl 19. Nun senden wir fehlerhafte Daten, um zu bestätigen, dass unsere Validierung funktioniert.
  • Das obige Beispiel löst einen ValidationError aus, da age eine Ganzzahl sein muss und "nineteen" nicht in eine umgewandelt werden kann:
  • Um den Fehler zu behandeln, statt dein Programm von ihm stoppen zu lassen, fange ihn mit try/except ab. Seine Methode errors() listet jedes ungültige Feld auf:

Strict Mode

  • Wenn du auch Strings wie "19" ablehnen möchtest, aktiviere den Strict Mode im Modell. Dann akzeptiert age nur ein echtes int, und Person(name="John", age="19", email="john@example.com") löst ValidationError aus.

Eine dataclass erstellen

  • Mit Pydantic kannst du auch dataclasses erstellen. Sie ähneln den Standard-dataclasses von Python, validieren ihre Felder aber wie BaseModel.
  • Wenn wir den String "19" an age senden, wird er in das int 19 umgewandelt.
Pydantic unterstützt rekursive Validierung, was bedeutet, dass bei der Validierung verschachtelter Modelle auch die inneren Modelle validiert werden.Wenn eine Klasse eine Liste von Person besitzt, people: list[Person], prüft Pydantic jedes Element der Liste und konvertiert es in eine Person.

Extras

  • Pydantic verfügt über einige Extras, etwa E-Mail-Validierung und ein Fallback-Zeitzonen-Paket. Um sie zu installieren, führe die folgenden Befehle aus:
  • Du kannst beide gemeinsam installieren, indem du den folgenden Befehl ausführst.
  • pydantic[email] fügt den Typ EmailStr hinzu, der das Format user@domain.tld validiert und die Adresse normalisiert.

Umgebungsvariablen beim Start validieren

  • Bots und APIs lesen Tokens und Einstellungen aus Umgebungsvariablen. Mit pydantic-settings stoppt eine fehlende oder ungültige Variable die Anwendung schon beim Start mit einer klaren Fehlermeldung, statt später mitten in einer Anfrage zu scheitern.
  • Deklariere die Variablen, die deine Anwendung braucht, in einer Klasse, die von BaseSettings erbt. Jedes Feld liest die gleichnamige Umgebungsvariable, ohne auf Groß- und Kleinschreibung zu achten: discord_token liest DISCORD_TOKEN.
settings.py
  • Ist DISCORD_TOKEN nicht gesetzt, löst Settings() für discord_token einen ValidationError mit der Meldung Field required aus. Ein Wert wie PORT=abc schlägt genauso fehl, da port eine Ganzzahl sein muss.
  • SecretStr verbirgt den Token, wenn du die Einstellungen ausgibst oder loggst. Den echten Wert liest du mit settings.discord_token.get_secret_value().

Auf Square Cloud ausführen

Trage Pydantic und seine Extras in deine requirements.txt ein, damit Square Cloud sie beim Deploy installiert:
requirements.txt
Erstelle im Stammverzeichnis deines Projekts eine Datei squarecloud.app. Für einen Bot, dessen Hauptdatei main.py ist und settings aus settings.py importiert:
squarecloud.app
Deine ZIP-Datei enthält deine .py-Dateien, requirements.txt und squarecloud.app, ohne den Token. Lege DISCORD_TOKEN und die anderen Variablen im Dashboard oder mit squarecloud app env set fest: siehe Umgebungsvariablen. Fehlt eine erforderliche Variable, erscheint der ValidationError in den Logs der Anwendung, sobald sie startet.

Nächste Schritte

Umgebungsvariablen

Lege die Variablen fest, die deine Settings-Klasse liest.

FastAPI

Deploye eine API, die ihre Anfragen mit Pydantic validiert.

Discord-Bot

Hoste einen Bot, der seinen Token aus der Umgebung liest.

Hat dir dieser Artikel gefallen?

  • Wir haben diesen Inhalt mit großer Sorgfalt erstellt, um dir die bestmögliche Hilfe zu bieten. Wenn dir dieser Artikel in irgendeiner Weise geholfen hat, unterstütze unsere Arbeit! Entwickler haben Square Cloud bereits mit 4,9/5 bei 402 Bewertungen auf Google und Trustpilot bewertet: hinterlasse auch deine! Sie hilft uns zu verstehen, was dir am wichtigsten ist.

Google Reviews

Hinterlasse deine Bewertung bei Google Reviews.

Trustpilot

Hinterlasse deine Bewertung bei Trustpilot.