Skip to content

系统配置

系统配置模块用于管理动态的键值对配置项,与数据字典类似但更偏向系统级参数。支持分组管理,可通过接口动态修改,无需重启服务。模块位于 application/config/

模块结构

application/config/
├── models.py       # 配置模型
├── forms.py        # 表单验证
├── services.py     # 业务逻辑层
├── views.py        # 视图层
└── urls.py         # 路由配置

application/config_item/
├── models.py       # 配置项模型
├── forms.py        # 表单验证
├── services.py     # 业务逻辑层
├── views.py        # 视图层
└── urls.py         # 路由配置

配置模型

配置分组(Config)

python
# application/config/models.py
class Config(BaseModel):
    """配置模型类"""
    class Meta:
        db_table = 'django_config'

    name = models.CharField(max_length=150, verbose_name='配置名称')
    code = models.CharField(max_length=150, verbose_name='配置编码')
    sort = models.IntegerField(default=0, verbose_name='配置排序')
    note = models.CharField(max_length=255, null=True, blank=True, verbose_name='配置备注')

配置项(ConfigItem)

python
# application/config_item/models.py
class ConfigItem(BaseModel):
    """配置项模型类"""
    class Meta:
        db_table = 'django_config_item'

    name = models.CharField(max_length=150, verbose_name='配置项名称')
    code = models.CharField(max_length=150, verbose_name='配置项编码')
    value = models.CharField(max_length=1000, null=True, blank=True, verbose_name='配置项值')
    options = models.TextField(null=True, blank=True, verbose_name='配置选项')
    config_id = models.IntegerField(default=0, verbose_name='配置ID')
    type = models.CharField(max_length=150, verbose_name='配置类型')
    status = models.IntegerField(default=1, verbose_name='配置状态:1-正常 2-停用')
    sort = models.IntegerField(default=0, verbose_name='配置项顺序')
    note = models.CharField(max_length=255, null=True, blank=True, verbose_name='配置项备注')

字段说明

字段类型说明
namestr配置项名称
codestr配置项编码(唯一标识)
valuestr配置项值
optionsstr配置选项(JSON 格式,用于下拉选择)
config_idint所属配置分组 ID
typestr配置类型(text/number/select/switch)
statusint状态:1-正常 2-停用
sortint排序权重

使用场景

系统配置适用于以下场景:

1. 网站基本信息(站点名称、Logo、版权信息)
2. 邮件配置(SMTP 服务器、端口、账号)
3. 短信配置(API Key、模板 ID)
4. 存储配置(OSS Bucket、上传限制)
5. 业务参数(默认密码、分页大小等)

配置类型

类型说明示例
text文本输入站点名称、SMTP 服务器
number数字输入端口号、超时时间
select下拉选择存储类型(本地/OSS/S3)
switch开关切换是否开启注册、是否开启验证码

网站配置

项目内置了网站配置模块,用于管理网站基本信息:

python
# application/config_web/models.py
class ConfigWeb(BaseModel):
    """网站配置模型类"""
    class Meta:
        db_table = 'django_config_web'

    name = models.CharField(max_length=150, verbose_name='网站名称')
    logo = models.CharField(max_length=255, null=True, blank=True, verbose_name='网站Logo')
    copyright = models.CharField(max_length=255, null=True, blank=True, verbose_name='版权信息')
    record_number = models.CharField(max_length=255, null=True, blank=True, verbose_name='备案号')
    # ... 其他字段

API 接口

配置分组

接口方法权限节点说明
/config/pageGETsys:config:page配置分页列表
/config/detail/<int:id>GETsys:config:detail配置详情
/config/addPOSTsys:config:add新增配置
/config/updatePUTsys:config:update编辑配置
/config/delete/<int:id>DELETEsys:config:delete删除配置

配置项

接口方法权限节点说明
/config/item/pageGETsys:configItem:page配置项分页列表
/config/item/detail/<int:id>GETsys:configItem:detail配置项详情
/config/item/addPOSTsys:configItem:add新增配置项
/config/item/updatePUTsys:configItem:update编辑配置项
/config/item/delete/<int:id>DELETEsys:configItem:delete删除配置项
/config/item/statusPUTsys:configItem:status设置状态

网站配置

接口方法权限节点说明
/config/web/detailGET需登录获取网站配置
/config/web/updatePUTsys:configWeb:update更新网站配置

与数据字典的区别

特性数据字典系统配置
用途枚举值(下拉选项)系统参数(配置值)
值类型简单值(字符串)可存储较长的配置内容
典型场景状态、性别、类型SMTP配置、站点信息
前端用法el-select 选项配置表单
缓存策略Redis 缓存按需查询
数据量通常每个字典 < 50 项每个分组 < 20 项

前端使用

配置项表单

配置项根据 type 字段动态渲染不同表单组件:

vue
<template>
    <el-form-item :label="item.name">
        <!-- 文本输入 -->
        <el-input v-if="item.type === 'text'" v-model="item.value" />
        <!-- 数字输入 -->
        <el-input-number v-else-if="item.type === 'number'" v-model="item.value" />
        <!-- 下拉选择 -->
        <el-select v-else-if="item.type === 'select'" v-model="item.value">
            <el-option v-for="opt in parseOptions(item.options)" :key="opt.value" :label="opt.label" :value="opt.value" />
        </el-select>
        <!-- 开关 -->
        <el-switch v-else-if="item.type === 'switch'" v-model="item.value" />
    </el-form-item>
</template>

总结

系统配置模块具备以下特点:

1. KV 结构:配置分组 + 配置项,灵活管理各类参数
2. 动态修改:通过接口修改,无需重启服务
3. 分组管理:按功能模块分组,清晰组织配置项
4. 类型丰富:支持 text/number/select/switch 多种类型
5. 网站配置:内置网站基本信息管理
6. 与字典互补:字典管理枚举值,配置管理系统参数

小蚂蚁云团队 · 提供技术支持