我刚刚开始学习python和django rest框架。我正在用django创建示例apis。我有一个问题,我需要设置验证错误信息。
例如 电子邮件被请求或电子邮件已经存在
这是我的代码。
序列器类:
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)
模型:Views.py
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)
这将引发一个Exception,但异常将由DRF处理(只要你正确使用它),并将返回一个400状态码和预期的错误信息。
此外,这个视图的功能和一个 创建APIView,你可能会更好地使用,而不是重新发明轮子。
尝试使用 serializer.errors
而不是 serializer.error
.
这将避免你得到的错误,它将返回你所期望的HTTP错误。