# -*- coding: utf-8 -*- """ DRF 自定义异常处理器:统一错误响应格式为 code、data、msg。 """ from rest_framework.views import exception_handler from rest_framework.exceptions import APIException def custom_exception_handler(exc, context): response = exception_handler(exc, context) if response is not None: if isinstance(exc, APIException) and getattr(exc, "status_code", None): response.status_code = exc.status_code code = response.status_code if isinstance(response.data, list): msg = response.data[0] if response.data else str(exc) elif isinstance(response.data, dict) and "detail" in response.data: msg = response.data["detail"] else: msg = str(response.data) if response.data else str(exc) response.data = {"code": code, "data": None, "msg": msg} return response