我正在尝试验证注册表格中的唯一用户名。在注册表格中输入详细信息后,我单击提交按钮,而不是通过给定的消息引发验证错误,它会失败并在/ register /处出现Validationerror错误。我也在尝试在函数内部打印字符串。但它也不会打印出来。它实际上是调用clean函数吗?我正在用自我实现这一目标。它应该被称为!。我在想什么吗?
class Register_Form(forms.Form):
user_id = forms.CharField(label="User Name",widget = forms.TextInput(
attrs = {"class":"form-control"}
))
email_id = forms.CharField(label = "Email",widget = forms.EmailInput(
attrs = {"class":"form-control"}
))
password = forms.CharField(label = "Password",widget = forms.PasswordInput(
attrs = {"class":"form-control"}
))
confirm_pass = forms.CharField(label = "Confirm Password",widget = forms.PasswordInput(
attrs = {"class":"form-control"}
))
def clean_username(self):
user_id = self.cleaned_data["user_id"]
print("Entered")
ue = User.objects.filter(username=user_id)
if ue.exists():
raise forms.ValidationError("User name not available")
return user_id
没有被调用,您通过self的事实并不意味着它会自动运行,您只是在使用self扩展您的功能,以便它可以继承其属性。
[在类内部的某个地方,您必须运行self.clean_username()
,或者如果您构造类,例如RF = Register_Form()
,您必须致电RF.clean_username()