在我的代码的第6行,我忘记将括号添加到is_valid()中,但是我的代码在没有括号的情况下工作正常。为什么是这样?我仍然可以访问form.cleaned_data。填写表格后,信息将保存到我的数据库中,终端将显示打印功能。SignUp()是一个ModelForm。
def signup(request):
form = SignUp()
context = {'form': form}
if request.method == 'POST':
form = SignUp(request.POST)
if form.is_valid:
form.save()
note = "Thanks {} for joining!".format(form.cleaned_data['firstname'])
print("Name: {}".format(form.cleaned_data['firstname']))
print("Age: {}".format(form.cleaned_data['age']))
return render(request, 'one_app/sign_up.html', {'form': form, 'note': note})
return render(request, 'one_app/sign_up.html', context)
class Members(models.Model):
firstname = models.CharField(max_length=20)
lastname = models.CharField(max_length=20)
age = models.SmallIntegerField()
sex = models.CharField(max_length=10, choices=SEX_CHOICES)
employeed = models.BooleanField()
start_date = models.DateField(auto_now_add=True)
def __str__(self):
return f"{self.firstname} {self.lastname}"
class SignUp(forms.ModelForm):
class Meta:
model = Members
fields = '__all__'
labels = {
'firstname': 'First Name:',
'lastname': 'Last Name:'
}
每个ModelForm也都有一个
save()
方法。此方法从绑定到表单的数据创建并保存数据库对象。
您能够访问的原因 form.cleaned_data
请注意,如果表单尚未通过验证,调用
save()
将通过选中进行form.errors
。一个ValueError
即如果-如果在表单中的数据不验证将提高form.errors
评估为True
。
如果您尝试省略声明form.save()
的内部if
声明你的代码将引发错误。
第一次调用is_valid()或访问错误时,将验证表单的数据。
您能够访问,form.cleaned_data
因为在form.save()
调用时会对其进行内部检查,form.errors
以确保创建了正确的Model实例。
现在,如文档所述,form.cleaned_data
在您致电form.is_valid()
或访问时都可用,form.errors
在这种情况下,在form.save()
呼叫过程中访问了表格错误。
希望现在您了解了为什么能够访问form.cleaned_data
。
https://docs.djangoproject.com/zh-CN/3.0/topics/forms/modelforms/#the-save-method
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句