发布于2019-10-07 19:28 阅读(800) 评论(0) 点赞(21) 收藏(4)
我的表格无法通过is_valid()
测试。我创建了一个通过相同数据输入通过测试的相同表单。不确定为什么会通过而失败。
表格如下:
choices = ( (1,'Yes'),(0,'No'),
)
class ActivitySaveForm(forms.Form):
name = forms.CharField(
label=u'Activity Name',
widget=forms.TextInput(attrs={'size': 64})
)
url = forms.URLField(
label=u'URL',
widget=forms.TextInput(attrs={'size': 64})
)
desc = forms.CharField(
label=u'Describe it',
widget=forms.TextInput(attrs={'size': 250})
)
created = forms.DateField(
label=u'Date Entered',initial=datetime.date.today,
)
priority = forms.CharField(
label=u'priority: 1-5',
widget=forms.TextInput(attrs={'size': 1})
)
difficulty = forms.CharField(
label=u'How hard is it? 1-5',
widget=forms.TextInput(attrs={'size': 1})
)
done = forms.TypedChoiceField(choices=choices, widget=forms.RadioSelect, coerce=int
)
tags = forms.CharField(
label=u'Tags',required=False,
widget=forms.TextInput(attrs={'size': 64})
)
#def __init__(self, *args, **kwargs):
#super(CircuitForm, self).__init__(*args, **kwargs)
#for key in self.fields:
#self.fields[key].required = False
class AcTest(forms.Form):
name = forms.CharField(
label=u'Activity Name',
widget=forms.TextInput(attrs={'size': 64})
)
url = forms.URLField(
label=u'URL',
widget=forms.TextInput(attrs={'size': 64})
)
desc = forms.CharField(
label=u'Describe it',
widget=forms.TextInput(attrs={'size': 250})
)
created = forms.DateField(
label=u'Date Entered',initial=datetime.date.today,
)
priority = forms.CharField(
label=u'priority: 1-5',
widget=forms.TextInput(attrs={'size': 1})
)
difficulty = forms.CharField(
label=u'How hard is it? 1-5',
widget=forms.TextInput(attrs={'size': 1})
)
done = forms.TypedChoiceField(choices=choices, widget=forms.RadioSelect, coerce=int
)
tags = forms.CharField(
label=u'Tags',required=False,
widget=forms.TextInput(attrs={'size': 64})
)
这是两者的测试和结果。
>>> data = {'name':'test',
... 'url': 'www.test.com',
... 'desc':'test desc',
... 'created': '01/01/1900',
... 'priority':1,
... 'difficulty':1,
... 'desc':'test desc',
... 'tags':'test desc'}
>>> f=ActivitySaveForm(data)
>>> f.is_valid()
False
>>> f=AcTest(data)
>>> f.is_valid()
True
不确定如何进一步诊断此错误,还没有找到使它起作用的方法。感谢您的协助。
我运行了您的代码,对我来说,两种形式都无法验证。您可以这样做:print f.errors
您将获得在验证期间创建的错误消息的HTML。
为此,我得到:
<ul class="errorlist"><li>done<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
因此,换句话说,即使需要,您也没有为“ done”字段指定值。一旦添加'done':1
到data
字典中,表单便会生效。
至于为什么一种形式通过验证,而另一种形式没有通过……我将所有这些形式粘贴到一个小的程序中,则可能会发现它们的行为方式相同。我只能推测由于某种原因,在两种情况下您都没有真正传递相同的数据。或者,当您进行测试时,表格之间存在细微的差异。但是我不能确定。
无论如何,尝试打印错误,您将获得洞察力。
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/133144/c01146bba4bc8af36867/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!