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

Django REST API如何接收POST请求内列表格式而非字典格式的单条数据

适配方案

仅需重写视图集的create方法,在数据传入序列化器之前剥离外层列表即可,无需修改现有序列化器或模型代码,修改后的views.py代码如下:

from rest_framework import status
from rest_framework.response import Response
from rest_framework import viewsets
from .serializers import RawIncomingDataSerializer
from .models import RawIncomingData

class RawIncomingDataViewSet(viewsets.ModelViewSet):
    queryset = RawIncomingData.objects.all()
    serializer_class = RawIncomingDataSerializer

    def create(self, request, *args, **kwargs):
        # 提取列表内的单条数据作为实际提交载荷
        submit_data = request.data[0] if isinstance(request.data, list) else request.data
        serializer = self.get_serializer(data=submit_data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)

方案说明

  • 保留原有全部序列化校验逻辑,无需调整序列化器代码
  • 仅对POST创建请求生效,不影响视图集其他接口的正常运行
  • 同时兼容原有字典格式和回调方发送的单元素列表格式的请求载荷,适配性更强

内容的提问来源于stack exchange,提问作者5muqcS7AknXPSt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:39:02