Ale*_*ich 8 django-rest-framework
我有以下问题。\n我有一个模型级验证,用于检查每次保存时的数据一致性。\n在序列化器中,如果此模型级别验证有效,它会产生server error 500回溯,而serializer.Validationerror在序列化器中,会产生漂亮且干净的结果,400 error并带有 json 中的错误消息。
为了将模型级别转换Validationerror为serializers. Validationerror我在序列化器中使用以下代码。
def perform_create(self, validated_data):\n try:\n return super().perform_create(validated_data)\n except exceptions.ValidationError as err:\n raise serializers.ValidationError(\n f'Model level validation assertion -- {str(err)}'\n ) from err\nRun Code Online (Sandbox Code Playgroud)\n\n它有效,但我不能并且不想覆盖每一个序列化器以转换 Validationerror为serializers. Validationerror.
问题是 - 有没有办法捕获所有 Validationerror 并将它们转换为序列化器。验证错误?
\nfrom rest_framework.views import exception_handler
from rest_framework.response import Response as DRF_response
from rest_framework import status
from django.core import exceptions
from django.views import View
from django.http import response
def custom_exception_handler(exc: Exception, context: View) -> [response, None]:
response = exception_handler(exc, context)
if isinstance(exc, exceptions.ValidationError):
data = exc.message_dict
return DRF_response(data=data, status=status.HTTP_400_BAD_REQUEST, )
return response
Run Code Online (Sandbox Code Playgroud)
我制作了一个自定义错误处理程序,它捕获所有 Django 标准验证错误并返回 DRF 样式响应。
| 归档时间: |
|
| 查看次数: |
2219 次 |
| 最近记录: |