Django Rest Framework中Serializer的create方法如何返回响应到视图
实现方案
序列化器的create方法仅负责订单和明细数据的创建逻辑,响应格式需要在视图层手动组装返回,具体实现如下:
1. 编写视图逻辑
在你的views.py中添加如下代码:
from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status from .serializers import OrderSerializer class OrderBatchCreateView(APIView): def post(self, request): serializer = OrderSerializer(data=request.data) # 校验提交的数据是否合法 if serializer.is_valid(): # 校验通过触发序列化器create方法创建数据 serializer.save() # 组装成功响应 dict_response = { "error": False, "Title": "Success", "ico": "successIcon", "message": "产品条目已成功添加" } return Response(dict_response, status=status.HTTP_201_CREATED) # 校验失败组装错误响应 exceptions = [] for key in serializer.errors.keys(): exceptions.append({"field": key, "message": serializer.errors[key][0]}) dict_response = { "error": True, "status": 400, "message": "提交的数据不合法,请修正以下错误", "exception": exceptions } return Response(dict_response, status=status.HTTP_400_BAD_REQUEST)
2. 配置路由
在对应APP的urls.py中添加路由映射:
from django.urls import path from .views import OrderBatchCreateView urlpatterns = [ # 可根据实际需求修改路由地址 path('order/batch-add/', OrderBatchCreateView.as_view(), name='order_batch_add'), ]
补充说明
如果需要在成功响应中返回创建好的订单及明细数据,直接在成功响应的dict_response中添加"data": serializer.data即可,序列化器会自动按你定义的字段格式返回完整数据。
内容的提问来源于stack exchange,提问作者Md. Rezaul Karim
相关产品推荐
相关产品推荐

