所以我向用户提供了一个复选框,正如您在forms.py
文件中看到的那样:
class AddFooToBarForm(forms.Form):
to_original = forms.BooleanField(initial=True,
error_messages={'required':
"Oh no! How do I fix?"})
...
根据用户是选中还是取消选中该复选框,我会执行不同的操作,您可以在views.py
文件中看到:
def add_foo_to_bar(request, id):
...
try:
bar = Bar.objects.get(pk=id)
if request.method == 'POST': # handle submitted data
form = AddFooToBarForm(bar, request.POST)
if form.is_valid(): # good, now create Foo and add to bar
...
to_original = form.cleaned_data['to_original']
print 'to original is {0}'.format(to_original) # for debugging
if to_original:
# do A
else:
# do B
...
所以我想在我的tests.py
文件中测试我的网站是否确实执行了正确的操作,具体取决于用户是否选中了复选框:
class FooTest(TestCase):
...
def test_submit_add_to_Bar(self):
form_data = {
...
'to_original': True,
}
response = self.client.post(reverse('add_foo_to_bar', args=(self.bar.id,)),
form_data, follow=True)
self.assertContains(...) # works
...
form_data['to_original'] = None
response = self.client.post(reverse('add_foo_to_bar', args=(self.bar.id,)),
form_data, follow=True)
print response # for debugging purposes
self.assertContains(...) # doesn't work
我试过
del form_data['to_original']
- 这给了我“哦不!我该怎么解决?”错误消息form_data['to_original'] = None
- 在我的视图功能中,我得到True
,因此A代替B form_data['to_original'] = False
- 这给了我“哦不!我该怎么解决?”再次出现错误消息那么我应该如何测试用户而不是检查Django中的复选框? (我使用的是最新版本,1.4.3)
答案 0 :(得分:1)
如果未选中复选框,则其不在提交的表单中。此外,提交的值为'on'
。
如果您想在定义表单字段时将BooleanField
选项设为required=False
。