You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django REST Framework的PUT请求体中传值更新max_date参数

解决Django REST Framework通过PUT请求体更新max_date布尔值的方法

1. 完善PUT方法逻辑

修改APIMaxDate类的put方法,从请求体中提取布尔值并更新数据库:

from rest_framework import status
from rest_framework.response import JsonResponse
from .models import Configuration

class APIMaxDate(APIView):

    def get(self, request, *args, **kwargs) -> JsonResponse:
        config = Configuration.objects.get(name='max_date')
        data = {
            f"{config.name}": config.value
        }
        return JsonResponse(data, status=status.HTTP_200_OK)

    def put(self, request, *args, **kwargs) -> JsonResponse:
        # 从请求体获取布尔参数,键名可根据需求自定义
        max_date_status = request.data.get('status')
        
        # 校验参数类型是否为布尔值
        if isinstance(max_date_status, bool):
            try:
                config = Configuration.objects.get(name='max_date')
                config.value = max_date_status
                config.save()
                return JsonResponse({
                    'max_date': config.value,
                    'msg': '更新成功'
                }, status=status.HTTP_200_OK)
            except Configuration.DoesNotExist:
                return JsonResponse({'error': '配置项不存在'}, status=status.HTTP_404_NOT_FOUND)
        else:
            return JsonResponse({'error': '参数必须是布尔值True或False'}, status=status.HTTP_400_BAD_REQUEST)

2. 请求示例

发送PUT请求到/api/config/max_date/,请求体需为JSON格式:

{
    "status": true
}

或:

{
    "status": false
}

同时要确保请求头设置Content-Type: application/json,否则DRF无法正确解析请求体。

3. 额外注意

如果你的Configuration模型中value字段不是BooleanField,需要先调整字段类型,或者在保存时做类型转换(比如将布尔值转为字符串存入CharField)。

内容的提问来源于stack exchange,提问作者muhammed hilal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:25:51