如何在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
相关产品推荐
相关产品推荐

