在代码的第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:'
}
答案 0 :(得分:1)
发生这种情况是因为library(dplyr)
f1 <- function(x, y) {
x %>%
group_by(!!ensym(y)) %>%
summarize(col.name = mean(var.name))
}
返回了一个方法。
任何都不同于“无”。
它将始终通过。
尝试一下:
form.is_valid
您会注意到将打印“非空”。
答案 1 :(得分:1)
每个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/en/3.0/topics/forms/modelforms/#the-save-method