­

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