如何在表单验证条件之前使用cleaned_data



我想在form.is_valid((条件之前使用cleaned_data['username'],如代码所示。我想从Django表单字段中获取值,并在数据库中检查用户名是否存在。但它给了我错误";表单对象没有属性cleaned_data";我应该如何解决这个问题,或者有其他方法可以从Django表单中获得价值吗?

view.py

def RegistrationView(request):
form=Registration_Form()

if request.method=='POST':
print("In Post")
form=Registration_Form(request.POST)
username=form.cleaned_data['username']
print(username)
if form.is_valid():

form.save()
return redirect('login_view')
else:
# messages.error(request,"Form is Invalid!")
return redirect('registration_view')
else:
return render(request,'registration.html',{'form':form})

型号.py

class User_Registration(models.Model):
company_name=models.CharField(max_length=250,blank=False)
username=models.CharField(max_length=10,primary_key=True,unique=True,blank=False)
password=models.CharField(max_length=10,unique=True,blank=False)
email=models.EmailField(max_length=250,blank=False)

forms.py

class Registration_Form(forms.ModelForm):
class Meta:
model=User_Registration
fields=('company_name','username','password','email')
widgets={
'company_name':forms.TextInput(attrs={'class':'form-control input-sm'}),
'username':forms.TextInput(attrs={'class':'form-control'}),
'password':forms.PasswordInput(attrs={'class':'form-control'}),
'email':forms.EmailInput(attrs={'class':'form-control'}),
}

您可以使用request.POST.get('username')访问原始发布数据。

class Registration_Form(forms.ModelForm):
def clean_username(self):
username = request.POST.get('username')
# do your validation here
# and return the data

最新更新