我是Python / Django的新手,我自学成才,所以也许我在这里缺少一些基本的东西......
我正在尝试为Django中的Model Form编写一个测试用例。 我创建了一个我的表单实例,我可以打印它以查看Django如何呈现表单。
使用form.cleaned_data也可以,返回表单的值。
bulk_image_form = BulkTestForm(data={'daisy': 3, 'dandelion': 0, 'tulips': 0, 'sunflowers': 1, 'roses': 0})
test_form = bulk_image_form
print(test_form)
print(test_form.cleaned_data)
但是,只要删除第一个打印语句(print(test_form)),test_form.cleaned_data就不再有效了。控制台读取以下内容:
AttributeError:'BulkTestForm'对象没有属性'cleaning_data'
为什么print语句会对访问对象的属性产生影响?
答案 0 :(得分:0)
您必须先致电is_valid()
,然后才能访问cleaned_data
。
test_form = bulk_image_form
test_form.is_valid()
print(test_form.cleaned_data)
当您打印表单时,表单会被验证为副作用,因此即使您没有明确调用cleaned_data
,也可以访问is_valid()
。