Django 开发拓展 auth 模块,
- 2020 年 1 月 16 日
- 笔记

原因
使用局部钩子函数 _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