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