如何在django-rest中实现验证错误消息



我刚刚开始学习python和django-rest框架。我正在django中创建示例api。我遇到了一个问题,需要设置验证错误消息。

例如需要电子邮件或电子邮件已存在

这是我的代码:

序列化程序类:

class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
#fields = ['id','title','author','date']
fields = '__all__'

views.py

def post(self,request):
serializer = ArticleSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.error,status = status.HTTP_400_BAD_REQUEST)

型号:

class Article(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
email = models.EmailField(max_length=100)
date = models.DateTimeField(auto_now_add = True)

def _str_(self):
#self.fields['email'].required = False
return self.title 

错误为:

'ArticleSerializer' object has no attribute 'error'

您不需要手动处理验证:

def post(self, request):
serializer = ArticleSerializer(data=request.data)
serializer.is_valid(raise_exception=True):
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)

这将引发一个异常,但该异常将由DRF处理(只要您正确使用它(,并将返回一个400状态代码和预期的错误消息。

此外,此视图的作用与CreateAPIView大致相同,使用它可能比重新设计轮子更好。

尝试使用serializer.errors(复数(而不是serializer.error

这将避免您遇到的错误,并返回您期望的HTTP错误。

最新更新