Become a sponsor

系统配置
系统配置模块用于管理动态的键值对配置项,与数据字典类似但更偏向系统级参数。支持分组管理,可通过接口动态修改,无需重启服务。模块位于 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 # 路由配置# 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='配置备注')# 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='配置项备注')| 字段 | 类型 | 说明 |
|---|---|---|
name | str | 配置项名称 |
code | str | 配置项编码(唯一标识) |
value | str | 配置项值 |
options | str | 配置选项(JSON 格式,用于下拉选择) |
config_id | int | 所属配置分组 ID |
type | str | 配置类型(text/number/select/switch) |
status | int | 状态:1-正常 2-停用 |
sort | int | 排序权重 |
系统配置适用于以下场景:
1. 网站基本信息(站点名称、Logo、版权信息)
2. 邮件配置(SMTP 服务器、端口、账号)
3. 短信配置(API Key、模板 ID)
4. 存储配置(OSS Bucket、上传限制)
5. 业务参数(默认密码、分页大小等)| 类型 | 说明 | 示例 |
|---|---|---|
text | 文本输入 | 站点名称、SMTP 服务器 |
number | 数字输入 | 端口号、超时时间 |
select | 下拉选择 | 存储类型(本地/OSS/S3) |
switch | 开关切换 | 是否开启注册、是否开启验证码 |
项目内置了网站配置模块,用于管理网站基本信息:
# 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='备案号')
# ... 其他字段| 接口 | 方法 | 权限节点 | 说明 |
|---|---|---|---|
/config/page | GET | sys:config:page | 配置分页列表 |
/config/detail/<int:id> | GET | sys:config:detail | 配置详情 |
/config/add | POST | sys:config:add | 新增配置 |
/config/update | PUT | sys:config:update | 编辑配置 |
/config/delete/<int:id> | DELETE | sys:config:delete | 删除配置 |
| 接口 | 方法 | 权限节点 | 说明 |
|---|---|---|---|
/config/item/page | GET | sys:configItem:page | 配置项分页列表 |
/config/item/detail/<int:id> | GET | sys:configItem:detail | 配置项详情 |
/config/item/add | POST | sys:configItem:add | 新增配置项 |
/config/item/update | PUT | sys:configItem:update | 编辑配置项 |
/config/item/delete/<int:id> | DELETE | sys:configItem:delete | 删除配置项 |
/config/item/status | PUT | sys:configItem:status | 设置状态 |
| 接口 | 方法 | 权限节点 | 说明 |
|---|---|---|---|
/config/web/detail | GET | 需登录 | 获取网站配置 |
/config/web/update | PUT | sys:configWeb:update | 更新网站配置 |
| 特性 | 数据字典 | 系统配置 |
|---|---|---|
| 用途 | 枚举值(下拉选项) | 系统参数(配置值) |
| 值类型 | 简单值(字符串) | 可存储较长的配置内容 |
| 典型场景 | 状态、性别、类型 | SMTP配置、站点信息 |
| 前端用法 | el-select 选项 | 配置表单 |
| 缓存策略 | Redis 缓存 | 按需查询 |
| 数据量 | 通常每个字典 < 50 项 | 每个分组 < 20 项 |
配置项根据 type 字段动态渲染不同表单组件:
<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. 与字典互补:字典管理枚举值,配置管理系统参数