Files
boss_dp/server/api/settings.py
Your Name 87f915819f 哈哈
2026-02-14 17:58:29 +08:00

43 lines
1.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- 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)