问题描述
我有一个注册用户表单,它按预期进行所有验证。然而,这不是节省。我无法弄清楚原因。我如何调试它?有什么帮助吗?我是表单和表单视图的新手,任何带有示例的好文档都会真正帮助我。
class RegisterForm(forms.ModelForm):
phone_number = forms.IntegerField(required=True)
password1 = forms.CharField(widget=forms.PasswordInput())
password2 = forms.CharField(widget=forms.PasswordInput())
country_code = forms.IntegerField()
#schools = school.objects.all()
#school_name = forms.ModelChoiceField(queryset=school.objects.distinct())
MIN_LENGTH = 4
class Meta:
model = User
fields = ['username','country_code','phone_number','password1','password2','full_name' ]
def clean_phone_number(self):
phone_number = self.data.get('phone_number')
print(phone_number)
if User.objects.filter(phone_number=phone_number).exists():
raise forms.ValidationError(
_("Another user with this phone number already exists"))
if len(phone_number) == 10 and phone_number.isdigit():
pass
else:
raise forms.ValidationError(
_("Invalid Phone Number"))
return phone_number
def save(self,*args,**kwargs):
print("saving")
user = super(RegisterForm,self).save(*args,**kwargs)
user.set_password(self.cleaned_data['password1'])
print('Saving user with country_code',user.country_code)
user.save()
return user
视图.py
class RegisterView(SuccessMessageMixin,FormView):
template_name = 'register-2.html'
form_class = RegisterForm
success_message = "One-Time password sent to your registered mobile number.\
The verification code is valid for 10 minutes."
def form_valid(self,form):
full_name=self.request.POST["full_name"]
user = form.save()
print(user.id)
username = self.request.POST['username']
password = self.request.POST['password1']
user = authenticate(username=username,password=password)
kwargs = {'user': user}
self.request.method = 'POST'
print("User created")
The print in clean_phone_number works however,save does not work
解决方法
我的表单有问题。该字段之一被禁用,因此未捕获该值。 但是要确定我使用了
def form_invalid(self,form):
# Add action to invalid form phase
messages.error(self.request,form.errors)
return self.render_to_response(self.get_context_data(form=form))