当使用
main.py
和 config.py
运行我的代码时,我将 config.testing
返回为 str
而不是 bool
。
或有来源
# src/app/main.py
from fastapi import Depends, FastAPI
from app.config import Settings, get_settings
app = FastAPI()
@app.get("/ping")
async def pong(*, settings: Settings = Depends(get_settings)) -> dict[str, str | bool]:
return {
"ping": "pong!",
"environment": settings.environment,
"testing": settings.testing,
}
# src/app/config.py
from functools import lru_cache
from logging import getLogger
from typing import cast
from pydantic import BaseSettings
_LOGGER = getLogger("uvicorn")
class Settings(BaseSettings):
environment: str = "dev"
testing: bool = cast(bool, 0)
@lru_cache
def get_settings() -> Settings:
_LOGGER.info("Loading config settings from the environment...")
return Settings()
我的 JSON 返回:
您的代码看起来与我今天在教程中看到的有点不同,但我的代码返回一个不带引号的
false
值。对我来说相关的行是 config.py 中的 testing: bool = 0
。
我建议查看本教程的当前版本并更新您的代码以使其看起来像现在的样子。