Skip to content

参数管理

参数管理模块用于管理动态系统参数,支持按参数键查询、修改,无需重启服务即可生效。

模块结构

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

参数模型

python
# application/param/models.py
from application.models import BaseModel

class Param(BaseModel):
    """参数模型类"""
    class Meta:
        db_table = 'django_param'

    name = models.CharField(max_length=100, verbose_name='参数名称')
    code = models.CharField(max_length=100, verbose_name='参数编码')
    value = models.CharField(max_length=255, verbose_name='参数值')
    type = models.IntegerField(verbose_name='参数类型:0-系统 1-业务')
    status = models.IntegerField(verbose_name='参数状态:1-正常 2-禁用')
    sort = models.IntegerField(verbose_name='参数排序')
    note = models.CharField(max_length=255, null=True, blank=True, verbose_name='参数备注')

表单验证

python
# application/param/forms.py
from django import forms
from application.param.models import Param

class ParamForm(forms.ModelForm):
    class Meta:
        model = Param
        fields = ['name', 'code', 'value', 'type', 'status', 'sort', 'note']
        error_messages = {
            'name': {
                'required': '参数名称不能为空',
            },
            'code': {
                'required': '参数编码不能为空',
            },
            'value': {
                'required': '参数值不能为空',
            },
        }

按编码取值

这是参数模块的核心自定义方法,供其他业务模块调用:

python
# application/param/services.py
def get_value_by_code(code, default=None):
    """根据参数编码获取参数值"""
    param = Param.objects.filter(
        code=code, status=1, is_delete=False
    ).first()
    return param.value if param else default

使用示例

python
from application.param.services import get_value_by_code

# 获取参数值(存在且状态=正常时返回值,否则返回默认值)
default_pwd = get_value_by_code("USER_DEFAULT_PASSWORD", "123456")
upload_limit = get_value_by_code("UPLOAD_MAX_SIZE", "10")
maintenance = get_value_by_code("MAINTENANCE_MODE", "0")

典型用法

在其他 service 中注入参数值,实现运行时可调的业务配置:

python
from application.param.services import get_value_by_code

def reset_password(user_id):
    # 从参数表读取默认密码,无需硬编码
    default_pwd = get_value_by_code("USER_DEFAULT_PASSWORD", "123456")
    # ... 重置密码逻辑

API 接口

接口方法权限节点说明
/param/pageGETsys:param:page分页查询
/param/detail/<int:param_id>GETsys:param:detail详情查询
/param/addPOSTsys:param:add新增参数
/param/updatePOSTsys:param:update编辑参数
/param/delete/<int:param_id>POSTsys:param:delete删除参数

查询参数

分页接口支持以下查询参数:

参数类型说明
pageNoint页码,默认 1
pageSizeint每页条数,默认 10
namestring参数名称,模糊搜索
codestring参数编码,模糊搜索
typeint参数类型(0=系统 1=业务)
statusint参数状态(1=正常 2=禁用)

与系统配置的区别

特性参数管理(Param)系统配置(Config)
用途单个系统参数配置分组 + 配置项
结构扁平(name+code+value)两级(config + config_item)
典型场景默认密码、功能开关SMTP 配置、站点信息

总结

参数管理模块是项目中典型的简单 CRUD 模块,核心特点:

1. 按编码取值:get_value_by_code() 供其他业务模块调用
2. 模糊搜索:name/code 模糊搜索,type/status 等值搜索
3. 唯一性校验:name 和 code 双重唯一性
4. 软删除 + 状态过滤:自动过滤已删除和已禁用的参数

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