【问题标题】:Raise Validation Error In Pre_Save Using Django Rest Framework使用 Django Rest 框架在 Pre_Save 中引发验证错误
【发布时间】:2014-09-03 19:03:52
【问题描述】:

我在使用 Django Rest 框架时遇到了验证错误。

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

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

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

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    使用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

    【讨论】:

      猜你喜欢
      • 2016-05-28
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-17
      • 2017-11-29
      相关资源
      最近更新 更多