【发布时间】:2016-08-11 04:07:38
【问题描述】:
我正在尝试覆盖 validate() 函数以由 serializers.is_valid() 调用,但它没有被调用。
serializer.py
class LoginSerializer(serializers.Serializer):
email = serializers.EmailField(max_length=255,required=True)
password = serializers.CharField(max_length=128,required=True)
def validate(self,data):
'''
Check for invalid email.
& blank email and password.
'''
print 'hey i am in login'
if data['email'] is '':
raise serializers.ValidationError("Email cannot be empty.")
if data['password'] is '':
raise serializers.ValidationError("Password cannot be empty.")
try:
validate_email(data['email'])
except ValidationError:
raise serializers.ValidationError("The email is not a valid email address.")
return data
views.py
class LoginAPI(APIView):
permission_classes = (permissions.AllowAny,)
serializer = LoginSerializer
def post(self, request):
data = self.serializer(data=request.data)
if data.is_valid():
#do something
else:
return Response(data.errors,status=status.HTTP_400_BAD_REQUEST)
当我调用is_valid() 时,validate() 函数内的打印语句没有被执行。
我做错了什么?
【问题讨论】:
-
POST请求中传递了什么数据? -
{"email":"xyz","password":""}
标签: python django django-forms django-views django-rest-framework