from typing import List, Optional, Any from pydantic_settings import BaseSettings, SettingsConfigDict class AppSettings(BaseSettings): """ 应用配置 """ model_config = SettingsConfigDict(env_prefix='app_', extra='ignore') # 应用运行环境 env: Optional[str] = None # 应用名称 name: Optional[str] = None # 应用代理路径 root_path: Optional[str] = None # 应用主机 host: Optional[str] = None # 应用端口 port: Optional[int] = None # 应用版本 version: Optional[str] = None # 应用是否允许跨域 origins: Optional[List[str]] = None # 应用是否开启热重载 reload: Optional[bool] = None # 应用是否开启IP归属区域查询 ip_location_query: Optional[bool] = None # 应用是否允许账号同时登录 same_time_login: Optional[bool] = None def __getattr__(self, name: str) -> Any: """ 忽略大小写获取属性 """ for key in self.__dict__: if key.lower() == name.lower(): return self.__dict__[key] raise AttributeError(f"'AppSettings' object has no attribute '{name}'")