Chapter 31: Advanced Configuration
Once RecipeVault grows, split configuration by concern.
from pydantic import AnyUrl
from pydantic_settings import BaseSettings
class DatabaseSettings(BaseSettings):
url: str
echo_sql: bool = False
class SecuritySettings(BaseSettings):
secret_key: str
access_token_minutes: int = 15
cookie_secure: bool = True
class Settings(BaseSettings):
database: DatabaseSettings
security: SecuritySettings
Advanced configuration practices:
- Validate settings at startup.
- Use typed URLs and constrained values where useful.
- Avoid global mutable settings.
- Keep test settings explicit.
- Separate public config from secrets.
- Document required environment variables.
In .NET, options validation is a named feature. In Python, your settings model is the validation layer.