原因
使用局部钩子函数 _clean_fields()
对 username、email 字段进行验证时,未返回,具体请参考 _clean_fields()
函数源码。
def clean_username(self):
"""
验证用户名是否被注册
:return:
"""
username = self.cleaned_data.get('username')
user_obj = UserInfo.objects.filter(username=username).count()
if user_obj:
raise ValidationError('用户名已存在')
解决
局部钩子函数一定要记得带上返回值,全局钩子函数也是一样:
def clean_username(self):
"""
验证用户名是否被注册
:return:
"""
username = self.cleaned_data.get('username')
user_obj = UserInfo.objects.filter(username=username).count()
if user_obj:
raise ValidationError('用户名已存在'
return username