django - 使用 Django Rest Framework 在 Pre_Save 中引发验证错误

标签 django django-rest-framework

我在使用 Django Rest Framework 时遇到验证错误。

我有一个所有者字段。所有者字段需要访问请求对象。文档建议 using the following approach :

def pre_save(self, obj):
    obj.owner = self.request.user

我的问题是如果此代码失败,如何引发验证错误。我尝试在 pre_save 方法中引发错误,但这不能正常工作。它实际上会导致从 Django 返回 HTML 响应,而不是来自 Django Rest Framework 的消息。

最佳答案

使用 django rest framework exceptions .例如:

from rest_framework.exceptions import ParseError

...

parsed_data = self.parse(some_data)
if not parsed_data:
    raise ParseError('Some error occurred')

另请注意,您不会在其中看到 404,那是因为它使用了 django.http.Http404 异常。这些由 API 以一种很好的方式返回。

注意:

如果您正在进行大量验证,您可能需要查看 placing your logic in the serializer .

关于django - 使用 Django Rest Framework 在 Pre_Save 中引发验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726789/

相关文章:

django - 'unique_together' 指的是不存在的字段

python - 如何在不破坏标签的情况下截断 html?

django - Microsoft Azure 将额外的查询字符串附加到带有查询字符串的 URL

python - 在两个用户之间共享临时数据的正确方法

python - Django Rest框架非模型序列化器

python - Django 的两个自引用外键

django - 当 drf 使用 ListAPIView 返回空查询集时如何返回 404

django - Django REST Framework UserSerializer 中的 keyerror

django - POST 请求时出现 DRF "field is required"错误?

python - django 教程第 4 部分中定义的变量 error_message 在哪里