關於django form驗證是否使用者名稱已存在
阿新 • • 發佈:2019-02-09
想通過django的Form模組進行資料庫中是否已存在使用者名稱的驗證,首先我先呼叫了資料庫使用者名稱欄位所有的值,發現是個queryset物件。
隨後經過查詢後發現queryset查詢集物件可以呼叫list工廠方法後,生成一個類似於[('user_name_1','username_2')]的物件,隨即把列表中的元組物件拿出來進行遍歷,完成驗證,form程式碼如下:
class Registerform(forms.Form): user_name = forms.CharField(label='你的姓名', max_length=10,error_messages={ }) user_psd = forms.CharField(label='你的密碼',widget=forms.PasswordInput()) user_psd2 = forms.CharField(label='請再次輸入你的密碼',widget=forms.PasswordInput()) email = forms.EmailField(label='你的郵件地址',widget=forms.TextInput) def clean(self): cleaned_data = self.cleaned_data pwd = self.cleaned_data['user_psd'] pwd2 =self.cleaned_data['user_psd2'] user_form = self.cleaned_data['user_name'] user_model = list(models.User_info.objects.all().values_list('user_name')) for i in user_model:#此步i為類似(username_1,username_2,)的元組物件 print(user_form) if user_form in i: raiseforms.ValidationError('使用者名稱已存在,請重新嘗試登入') if pwd!=pwd2: raise forms.ValidationError('兩次輸入的密碼不匹配') return cleaned_data