Files
boss_dp/server/api/settings.py

43 lines
1.5 KiB
Python
Raw Normal View History

2026-02-14 17:58:29 +08:00
# -*- coding: utf-8 -*-
"""
系统配置 API需要登录
- GET /api/settings -> 查询所有配置
- POST /api/settings -> 批量更新配置传入 key-value 对象
- GET /api/settings/{key} -> 查询单个配置
"""
from rest_framework import status
from rest_framework.decorators import api_view
2026-02-26 01:27:35 +08:00
from server.core.response import api_success, api_error
2026-02-14 17:58:29 +08:00
from server.models import SystemConfig
from server.serializers import SystemConfigSerializer
@api_view(["GET", "POST"])
def settings_list(request):
if request.method == "GET":
qs = SystemConfig.objects.all().order_by("key")
2026-02-26 01:27:35 +08:00
return api_success(SystemConfigSerializer(qs, many=True).data)
2026-02-14 17:58:29 +08:00
# POST: 批量更新,请求体格式 {"key1": "value1", "key2": "value2", ...}
if not isinstance(request.data, dict):
2026-02-26 01:27:35 +08:00
return api_error(status.HTTP_400_BAD_REQUEST, "请传入 key-value 对象")
2026-02-14 17:58:29 +08:00
results = []
for key, value in request.data.items():
obj, created = SystemConfig.objects.update_or_create(
key=key,
defaults={"value": str(value)},
)
results.append(SystemConfigSerializer(obj).data)
2026-02-26 01:27:35 +08:00
return api_success(results)
2026-02-14 17:58:29 +08:00
@api_view(["GET"])
def settings_detail(request, key):
try:
obj = SystemConfig.objects.get(key=key)
except SystemConfig.DoesNotExist:
2026-02-26 01:27:35 +08:00
return api_error(status.HTTP_404_NOT_FOUND, f"配置项 '{key}' 不存在")
return api_success(SystemConfigSerializer(obj).data)