Tilpassede datatyper og indstillinger
Definér tilpassede Pydantic-datatyper, og administrér applikationsindstillinger ved hjælp af Pydantic's `BaseSettings`.
Tilpassede datatyper og indstillinger er en gratis Bootcamp i FastAPI-backendudvikling-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Bootcamp i FastAPI-backendudvikling, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Bootcamp i FastAPI-backendudvikling-kurset indeholder 4 lektioner i alt.
Velkommen til tilpassede typer!
Pydantic er fantastisk til validering af data, men nogle gange har du brug for validering ud over de indbyggede typer.
- Tilpassede datatyper giver dig mulighed for at definere dine egne regler for data.
- Det sikrer, at dine data overholder bestemte formater eller forretningslogik.
- Du kan se det som en udvidelse af Pydantics funktionalitet til særlige behov.
`Annotated` til tilpasset validering
Pydantic v2 bruger Pythons typing.Annotated sammen med validatorfunktioner til at oprette tilpassede typer.
Annotated: Føjer metadata til et typehint.BeforeValidator: Kører en funktion før Pydantics standardvalidering.- Det giver dig mulighed for at transformere eller validere inputdata, før de tildeles.
Oprettelse af en `CapitalizedString`
Lad os oprette en tilpasset type kaldet CapitalizedString, som sikrer, at det første bogstav i en streng altid er stort.
Vores validatorfunktion kontrollerer denne regel. Hvis strengen ikke begynder med et stort bogstav, udløser den en fejl.
Brug af din tilpassede type
Sådan definerer og bruger du vores nye type CapitalizedString i en Pydantic-model. Prøv at ændre name, så det begynder med et lille bogstav, og se valideringsfejlen!
from typing import Annotated
from pydantic import BaseModel, BeforeValidator, ValidationError
def validate_capitalized(v: str) -> str:
if not isinstance(v, str):
raise TypeError("String required")
if v and not v[0].isupper():
raise ValueError("Must start with uppercase")
return v
CapitalizedString = Annotated[str, BeforeValidator(validate_capitalized)]
class Product(BaseModel):
name: CapitalizedString
price: float
if __name__ == "__main__":
try:
product1 = Product(name="Laptop", price=1200.50)
print(f"Product: {product1.name}")
# This will raise a ValidationError
# product2 = Product(name="keyboard", price=75.00)
except ValidationError as e:
print(f"Validation Error: {e}")Administrer indstillinger med `BaseSettings`
Programindstillinger (f.eks. database-URL'er og API-nøgler) ændres ofte mellem udviklings- og produktionsmiljøer.
BaseSettings fra pydantic-settings er udviklet til nemt at administrere disse konfigurationer. Den indlæser automatisk indstillinger fra:
- Miljøvariabler
.env-filer- Standardværdier
Standardindstillinger i praksis
Definer dine indstillinger som attributter i en klasse, der nedarver fra BaseSettings. Pydantic håndterer resten og leverer standardværdier, hvis intet andet er angivet.
from pydantic_settings import BaseSettings
class AppConfig(BaseSettings):
app_name: str = "My FastAPI App"
debug_mode: bool = False
version: str = "1.0.0"
if __name__ == "__main__":
settings = AppConfig()
print(f"App Name: {settings.app_name}")
print(f"Debug Mode: {settings.debug_mode}")
print(f"Version: {settings.version}")Indlæsning fra miljøvariabler
BaseSettings leder automatisk efter miljøvariabler, der svarer til navnene på dine indstillinger (uanset store og små bogstaver).
I dette eksempel angiver vi midlertidigt en miljøvariabel for at vise, hvordan Pydantic finder den og tilsidesætter standardværdien.
import os
from pydantic_settings import BaseSettings
class AppConfig(BaseSettings):
app_name: str = "Default App"
database_url: str = "sqlite:///./test.db"
if __name__ == "__main__":
print("--- Without env var ---")
settings_default = AppConfig()
print(f"App Name: {settings_default.app_name}")
# Simulate setting an environment variable
os.environ["APP_NAME"] = "Production App"
os.environ["DATABASE_URL"] = "postgresql://user:pass@host:5432/db"
print("\n--- With env var ---")
settings_env = AppConfig()
print(f"App Name: {settings_env.app_name}")
print(f"DB URL: {settings_env.database_url}")
# Clean up the environment variable for subsequent runs
del os.environ["APP_NAME"]
del os.environ["DATABASE_URL"]Udnyttelse af `.env`-filer
Til lokal udvikling er det almindeligt at gemme indstillinger i en .env-fil (f.eks. .env) i projektets rodmappe.
Du kan konfigurere BaseSettings til at indlæse fra denne fil ved hjælp af SettingsConfigDict(env_file='.env') i din indstillingsklasse.
Eksempel på indhold i .env:APP_NAME="Dev App"
API_KEY="your_dev_api_key"
from pydantic_settings import BaseSettings, SettingsConfigDict
class ProjectSettings(BaseSettings):
model_config = SettingsConfigDict(env_file='.env', extra='ignore')
app_name: str = "Default Project"
api_key: str = "default_key"
# To make this runnable, you would need python-dotenv installed
# and an actual .env file in the same directory as the script.
# For this lesson, we show the setup.
# Example usage (if .env existed and python-dotenv was active):
# if __name__ == "__main__":
# settings = ProjectSettings()
# print(f"App Name: {settings.app_name}")
# print(f"API Key: {settings.api_key}")
Forstå prioriteringen af indstillinger
Når BaseSettings leder efter en værdi, følger den en bestemt prioriteringsrækkefølge:
- Miljøvariabler (højeste prioritet)
- Variabler i
.env-filen - Standardværdier defineret i klassen
BaseSettings(laveste prioritet)
Det sikrer, at miljøvariabler altid kan tilsidesætte lokale .env-filer og klassens standardværdier, hvilket er afgørende ved udrulning.
Test din viden!
Hvilke af følgende udsagn om Pydantics BaseSettings og tilpassede typer er sande?
Opsummering: Tilpassede typer og indstillinger
Godt gået! Du har lært at oprette effektive tilpassede datatyper med Annotated og BeforeValidator og dermed udvide Pydantics validering.
Du har også lært at bruge BaseSettings til robust konfiguration af applikationer og forstået, hvordan den indlæser værdier fra standardværdier, .env-filer og miljøvariabler efter tydelige prioriteringsregler.
Disse værktøjer er afgørende, når du bygger fleksible og vedligeholdelsesvenlige FastAPI-applikationer!
Lær Bootcamp i FastAPI-backendudvikling med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 21
- Lektioner
- 84
Ofte stillede spørgsmål
Er lektionen “Tilpassede datatyper og indstillinger” gratis?
Ja — alle 3 lektioner i læringssporet Bootcamp i FastAPI-backendudvikling, inklusive “Tilpassede datatyper og indstillinger”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Bootcamp i FastAPI-backendudvikling-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Tilpassede datatyper og indstillinger”?
Definér tilpassede Pydantic-datatyper, og administrér applikationsindstillinger ved hjælp af Pydantic's `BaseSettings`. Du øver dig i Bootcamp i FastAPI-backendudvikling med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Bootcamp i FastAPI-backendudvikling?
Der kræves ingen tidligere erfaring. Bootcamp i FastAPI-backendudvikling på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Tilpassede datatyper og indstillinger”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Bootcamp i FastAPI-backendudvikling-lektion?
Ja. Alle Bootcamp i FastAPI-backendudvikling-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Pydantic-feltvalidering og validators
- Tilpassede datatyper og indstillinger
- Indlejrede modeller og rekursive strukturer
- Serialisering med model_dump og aliases