为了与 EmberData 进行互操作,似乎每当发生验证错误时,我都需要 回复 422 (
Unprocessable Entity
) 而不是 400 (Bad Request
)。我有两个问题:
还有奖励:
422 是 WebDAV DRF 的一部分,其错误代码不在 DRF 中。 这并不妨碍您使用它。它们只是数字本身的人类可读版本。
一种选择是覆盖
rest_framework.exceptions.ValidationError.status_code
并将其设置为 422。
编辑 - 更改默认错误代码:
# At the top of a views.py file, by the ends of import add:
from rest_framework.exceptions import ValidationError
ValidationError.status_code = 422
如果您使用纯 Django,您可以创建自定义响应,如下所示:
from http import HTTPStatus
from django.http import HttpResponse
class HttpResponseUnprocessableEntity(HttpResponse):
status_code = HTTPStatus.UNPROCESSABLE_ENTITY
考虑之前检查 Django 是否尚未提供符合您需求的响应。这是关于它的 Django 文档会话。