Преглед изворни кода

气象站要素配置工具:修复获取要素列表异常报错的问题。

zhaiyifei пре 2 година
родитељ
комит
d71d48ae0f
2 измењених фајлова са 12 додато и 3 уклоњено
  1. 2 2
      apps/QxzApp/views.py
  2. 10 1
      utils/exception.py

+ 2 - 2
apps/QxzApp/views.py

@@ -528,7 +528,7 @@ class QxzDeviceListView(GenericAPIView):
         serializer.is_valid(raise_exception=True)
         data = serializer.validated_data
 
-        device_id = data['device_id']
+        device_id = data.get('device_id')
         queryset = self.get_queryset()
         if device_id:
             queryset = queryset.filter(Q(device_id__contains=device_id) | Q(order_num__contains=device_id))
@@ -635,6 +635,6 @@ def init_data():
         c.eNum = item[0]
         c.cName = item[1]
         c.units = item[2]
+        c.is_default = True
         c.save()
 
-

+ 10 - 1
utils/exception.py

@@ -6,6 +6,7 @@
 from rest_framework.views import exception_handler
 from rest_framework.views import Response
 from rest_framework import status
+from rest_framework.exceptions import ValidationError, ErrorDetail
 
 
 def custom_exception_handler(exc, context):
@@ -18,8 +19,16 @@ def custom_exception_handler(exc, context):
         }, status=status.HTTP_500_INTERNAL_SERVER_ERROR, exception=True)
 
     else:
+        msg = '{exc}'.format(exc=exc)
+        if isinstance(exc, ValidationError):
+            for key, value in exc.get_full_details().items():
+                if value and isinstance(value, list):
+                    value = value[0]["message"]
+                    if isinstance(value, ErrorDetail):
+                        msg = f"{key} {value}"
+
         return Response({
             'code': response.status_code,
-            'msg': '{exc}'.format(exc=exc),
+            'msg': msg,
             'data': ''
         }, status=200, exception=True)