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
from rest_framework.response import Response
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")
return Response(SystemConfigSerializer(qs, many=True).data)
# POST: 批量更新,请求体格式 {"key1": "value1", "key2": "value2", ...}
if not isinstance(request.data, dict):
return Response({"detail": "请传入 key-value 对象"}, status=status.HTTP_400_BAD_REQUEST)
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)
return Response(results)
@api_view(["GET"])
def settings_detail(request, key):
try:
obj = SystemConfig.objects.get(key=key)
except SystemConfig.DoesNotExist:
return Response({"detail": f"配置项 '{key}' 不存在"}, status=status.HTTP_404_NOT_FOUND)
return Response(SystemConfigSerializer(obj).data)