使用Django Rest Framework时,我很难提出验证错误。
我有一个所有者字段。 owner字段需要访问请求对象。文档建议using the following approach:
def pre_save(self, obj):
obj.owner = self.request.user
我的问题是如果此代码失败,如何引发验证错误。我尝试在pre_save方法中引发错误,但这不能正常工作。它实际上导致从Django返回的HTML响应,而不是来自Django Rest Framework的消息。
答案 0 :(得分:3)
使用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。