如何在UpdateAPIView中返回自定义JSON响应?

huangapple go评论97阅读模式
英文:

How to return custom JSON response in UpdateAPIView?

问题

I was trying to return some custom message after the user completes updating data after submission. How can I do this in the UpdateApiView?

  1. class DetailUpdateView(generics.UpdateAPIView):
  2. permission_classes = (permissions.IsAuthenticated,)
  3. lookup_field = "pk"
  4. serializer_class = DetailSerializers
  5. def get_queryset(self):
  6. data = Data.objects.all()
  7. return data

I want a response something like this:

  1. {
  2. "message": "success",
  3. "status": 200,
  4. "details": [
  5. {
  6. "id": 2,
  7. "DOB": "2012-10-21",
  8. "cycle_length": "10",
  9. "category": "2",
  10. "child_dob": null,
  11. "Period": "10",
  12. "Last_cycle": "2012-10-21",
  13. "userid": 2
  14. }
  15. ]
  16. }
英文:

I was trying to return some custom message after user complete updated data after submit. How can i do this in UpdateApiView?

  1. class DetailUpdateView(generics.UpdateAPIView):
  2. permission_classes = (permissions.IsAuthenticated,)
  3. lookup_field = "pk"
  4. serializer_class = DetailSerializers
  5. def get_queryset(self):
  6. data = Data.objects.all()
  7. return data

I want response something like this:

  1. {
  2. "message": "success",
  3. "status": 200,
  4. "details": [
  5. {
  6. "id": 2,
  7. "DOB": "2012-10-21",
  8. "cycle_length": "10",
  9. "category": "2",
  10. "child_dob": null,
  11. "Period": "10",
  12. "Last_cycle": "2012-10-21",
  13. "userid": 2
  14. },

答案1

得分: 4

你可以像这样覆盖UpdateAPIView中的update方法:

  1. class DetailUpdateView(generics.UpdateAPIView):
  2. permission_classes = (permissions.IsAuthenticated,)
  3. lookup_field = "pk"
  4. serializer_class = DetailSerializers
  5. def get_queryset(self):
  6. data = Data.objects.all()
  7. return data
  8. def update(self, request, *args, **kwargs):
  9. partial = kwargs.pop('partial', False)
  10. instance = self.get_object()
  11. serializer = self.get_serializer(instance, data=request.data, partial=partial)
  12. serializer.is_valid(raise_exception=True)
  13. self.perform_update(serializer)
  14. result = {
  15. "message": "success",
  16. "details": serializer.data,
  17. "status": 200,
  18. }
  19. return Response(result)

注意:代码部分不需要翻译。

英文:

you can override update from UpdateAPIView like this:

  1. class DetailUpdateView(generics.UpdateAPIView):
  2. permission_classes = (permissions.IsAuthenticated,)
  3. lookup_field = "pk"
  4. serializer_class = DetailSerializers
  5. def get_queryset(self):
  6. data = Data.objects.all()
  7. return data
  8. def update(self, request, *args, **kwargs):
  9. partial = kwargs.pop('partial', False)
  10. instance = self.get_object()
  11. serializer = self.get_serializer(instance, data=request.data, partial=partial)
  12. serializer.is_valid(raise_exception=True)
  13. self.perform_update(serializer)
  14. result = {
  15. "message": "success",
  16. "details": serializer.data,
  17. "status": 200,
  18. }
  19. return Response(result)

huangapple
  • 本文由 发表于 2020年1月6日 17:46:13
  • 转载请务必保留本文链接:https://go.coder-hub.com/59609826.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定