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