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