You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pydantic BaseSettings中配置allowed_hosts为字符串列表?

解决Pydantic Settings中allowed_hosts转为字符串列表的问题

要将allowed_hosts设置为字符串列表并解决解析报错,可按以下几种方式实现:

方法一:利用默认逗号分隔解析

Pydantic Settings 默认支持将逗号分隔的环境变量字符串自动解析为列表,只需正确定义字段类型并配置环境变量即可:

  1. 导入必要类型并修改字段定义:
from typing import List
from pydantic_settings import BaseSettings

class EnvSettings(BaseSettings):
    debug: bool = False
    secret_key: str
    allowed_hosts: List[str]  # 改为列表类型
    db_name: str
    db_user: str
    db_password: str
    db_host: str
    db_port: str
    minio_endpoint: str
    minio_access_key: str
    minio_secret_key: str
    minio_use_https: bool = False
    minio_media_bucket_name: str
    minio_static_bucket_name: str
    minio_media_url: str
    minio_static_url: str
    celery_broker_url: str
    celery_task_default_queue: str = 'default'
  1. 配置环境变量(或.env文件):
    将ALLOWED_HOSTS设置为逗号分隔的字符串,例如:
ALLOWED_HOSTS=localhost,127.0.0.1,example.com

方法二:自定义解析逻辑(支持其他分隔符)

如果需要用逗号以外的分隔符(比如空格、分号),可以通过validator自定义解析规则:

from typing import List
from pydantic import validator
from pydantic_settings import BaseSettings

class EnvSettings(BaseSettings):
    debug: bool = False
    secret_key: str
    allowed_hosts: List[str]
    db_name: str
    db_user: str
    db_password: str
    db_host: str
    db_port: str
    minio_endpoint: str
    minio_access_key: str
    minio_secret_key: str
    minio_use_https: bool = False
    minio_media_bucket_name: str
    minio_static_bucket_name: str
    minio_media_url: str
    minio_static_url: str
    celery_broker_url: str
    celery_task_default_queue: str = 'default'

    @validator('allowed_hosts', pre=True)
    def split_hosts(cls, value):
        # 如果输入是字符串,按逗号分割并去除首尾空格
        if isinstance(value, str):
            return [host.strip() for host in value.split(',')]
        # 非字符串类型直接返回(比如已是列表的情况)
        return value

报错原因说明

你遇到的SettingsError是因为当字段定义为List[str]时,Pydantic Settings 无法直接将环境变量中的原始字符串转换为列表类型,必须明确告诉它如何完成字符串到列表的解析转换。

内容的提问来源于stack exchange,提问作者Ali Joghataee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:52:16