我想为我的序列化程序之一的成功和失败创建自定义响应。现在我只有成功的创建功能
我希望输出像默认输出 + 我的另外 2 条消息一样显示。
提示消息和状态。
例如json数据的输出:如果成功:
promptmsg = "您已成功创建xxx"
状态='200'
如果失败
promptmsg = "您创建xxx失败"
状态='400'
这是我的观点的代码
class ScheduleViewSet(viewsets.ModelViewSet):
permission_classes = [AllowAny]
queryset = Schedule.objects.all()
serializer_class = ScheduleSerializer
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
if not serializer.is_valid(raise_exception=False):
return Response({"promptmsg": "You have failed to register an account",
"status": "400"}, status=HTTP_400_BAD_REQUEST)
response = super(ScheduleViewSet, self).create(request, *args, **kwargs)
response.data['promptmsg'] = 'You have successfully create a book'
response.data['statuscode'] = '200'
return response
def update(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False)
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=partial)
if not serializer.is_valid(raise_exception=False):
return Response({"promptmsg": "You have failed to register an account",
"statuscode": "400"}, status=HTTP_400_BAD_REQUEST)
# serializer.is_valid(raise_exception=True)
# self.perform_update(serializer)
response = super(ScheduleViewSet, self).update(request, *args, **kwargs)
response.data['promptmsg'] = 'You have successfully create a book'
response.data['statuscode'] = '200'
return response
如您所见,如果失败,它只会返回提示消息和状态。
如果成功将显示默认响应+提示消息+状态。
那么我该如何更改它?
最佳答案
如果我理解正确的话,您需要将错误详细信息添加到自定义错误响应中,以防序列化失败?在这种情况下,您可以使用 serializer.errors
属性:
if not serializer.is_valid(raise_exception=False):
errors_details = serializer.errors
errors_details["promptmsg"] = "You have failed to register an account"
errors_details["status"] = "400"
return Response(errors_details, status=HTTP_400_BAD_REQUEST)
关于Django 自定义成功和失败的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48898732/