擅长:python、mysql、java
<p>仅通过默认的DRF句柄<code>APIException</code>(请参见<a href="https://github.com/encode/django-rest-framework/blob/95d4843abeecea96754a147f4f2cca33e620ad09/rest_framework/views.py#L86" rel="nofollow noreferrer">source</a>)。由于您正在上升<code>Django's</code>ValidationError<code>instead of DRF's</code>Validation`error,因此此处理程序返回None</p>
<p>要解决这个问题,您可以使用DRF中的<code>ValidationError</code>:</p>
<pre><code>from rest_framework.exceptions import ValidationError
</code></pre>
<p>还是自己写<a href="https://www.django-rest-framework.org/api-guide/exceptions/#custom-exception-handling" rel="nofollow noreferrer">custom exception_handler</a>更好:</p>
<pre><code>from rest_framework.views import exception_handler
from django.core.exceptions import ValidationError
def custom_exception_handler(exc, context):
# Call REST framework's default exception handler first,
# to get the standard error response.
response = exception_handler(exc, context)
if response is None and isinstance(exc, ValidationError):
return Response(status=400)
return response
</code></pre>